橙色网站模版,电子商务网站制作教程,职业生涯规划ppt免费模板,顺企网怎么发布公司信息转载自 BufferedInputStream与ImageInputStreamBufferedInputStream读取图片文件#xff08;jpg格式#xff09;,但是图片大小在1M到200M之间都有#xff0c;由于图片太大#xff0c;不知道怎么处理好#xff0c;谢谢各位大哥大姐教教小弟#xff0c;现在只能读取1M以下读…转载自 BufferedInputStream与ImageInputStreamBufferedInputStream读取图片文件jpg格式,但是图片大小在1M到200M之间都有由于图片太大不知道怎么处理好谢谢各位大哥大姐教教小弟现在只能读取1M以下读图片但要求是需要读取1M到200M的大图片
下面是方法的代码public String changeImg2(String filename){ //ImgRotate ir new ImgRotate();String result;File file1 new File(filename);BufferedImage image null; int height 0;int width 0;try { // image ImageIO.read(file1); //int width image.getWidth();// int height image.getHeight();//ImgRotate ir new ImgRotate();Iterator readers null;if((filename.substring(filename.lastIndexOf(.)1).equals(jpg))){readers ImageIO.getImageReadersByFormatName( jpg); }else if((filename.substring(filename.lastIndexOf(.)1).equals(bmp))){readers ImageIO.getImageReadersByFormatName( bmp); }else if((filename.substring(filename.lastIndexOf(.)1).equals(jpeg))){readers ImageIO.getImageReadersByFormatName( jpeg); }else if((filename.substring(filename.lastIndexOf(.)1).equals(gif))){readers ImageIO.getImageReadersByFormatName( gif); }ImageReader reader (ImageReader)readers.next(); try { // FileInputStream source new FileInputStream(filename);//your image path // FileReader source new FileReader(filename);//InputStream sourcenew DataInputStream(new BufferedInputStream(new FileInputStream(filename)));BufferedInputStream source new BufferedInputStream(new FileInputStream(filename));ImageInputStream iis ImageIO.createImageInputStream(source); reader.setInput(iis,true); height reader.getHeight(0); width reader.getWidth(0); resultString.valueOf(width),String.valueOf(height);reader.dispose(); iis.close(); source.close(); if(widthheight){rotateImage(file1,90);}System.out.println(widthwidth);System.out.println(heightheight);} catch(Exception e) { e.printStackTrace();System.out.println(e.getMessage()); }} catch (Exception e) { e.printStackTrace(); } return result;
1.有一个库你尝试用一下吧thumbnailator-0.4.3.jar2.纯java处理图片只能开大内存吧虚拟机内存开到1G去java处理图片全部都是在内存里的。有个VolatileImage据说可以利用显存但是我曾经试过的效果还不如bufferedimage。当然最好的办法就是分块读取、分块处理这样最怕1G的图片也没有任何问题不过算法就比较复杂了。