1.通过ImageIO的read和writer,对图像文件进行处理。
BufferedImage buffImage = ImageIO.read(file);
// 将图像输出到Servlet输出流中。
ImageIO.write(buffImage, "jpg", response.getOutputStream());
2. 使用byteArray保存request获取的流数据
1 InputStream is = null; 2 byte[] byteArray = null; 3 ByteArrayOutputStream os = null; 4 try{ 5 is = super.getRemoteReqStream(url); 6 byte[] temp = new byte[1024]; 7 os = new ByteArrayOutputStream(); 8 int iLength = 0; 9 while((iLength = is.read(temp, 0, 1024)) != -1){ 10 os.write(temp, 0, iLength); 11 } 12 is.close(); 13 byteArray = os.toByteArray();
ByteArrayOutputStream
3.FileUtils可对文件进行各种操作。
4.FileNameUtils可对文件名进行各种操作。
5. 通过Base64对image流文件转化(这里Base64使用的是Apache的Base64)
1 /** 2 * 通过Base64对图像数组进行转化为字符串 3 * @param byteArray 4 * @return 5 */ 6 @SuppressWarnings("static-access") 7 public static String getImageStrByBase64(byte[] byteArray){ 8 String strImage = ""; 9 // 空值判断 10 if(null == byteArray || byteArray.length == 0){ 11 return strImage; 12 } 13 Base64 base64 = new Base64(); 14 strImage = base64.encodeBase64String(byteArray); 15 return strImage; 16 } 17 18 19 /** 20 * 通过Base64对图像数组进行转化为字符串 21 * @param byteArray 22 * @return 23 */ 24 @SuppressWarnings("static-access") 25 public static byte[] getImageByteByBase64(String strImage){ 26 byte[] byteImg = null; 27 // 空值判断 28 if(StringUtils.isEmpty(strImage)){ 29 return byteImg; 30 } 31 Base64 base64 = new Base64(); 32 byteImg = base64.decodeBase64(strImage); 33 return byteImg; 34 }
Base64
6.canvas
canvas.toDataURL("image/jpeg", 0.8); // (image/png)
7.<img>
1. 流形式:<img src="/image/srcInputStream" />
2. 文件路径: <img src="/image/default.jpg" /> 当web运行报出找不到图片但图片确实存在时,因为Tomcat服务器的访问权限设置,使得无法访问本项目之外的文件。需要配置Server.xml
添加路径 :
<Context crossContext="true" docBase="D:\app\hrcloud\elearning\file\video" path="/fileSource" reloadable="true">
</Context>
3. base64展示:
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJ"/>
4. 因error方法在jquery3版本已经去掉,因此
$("img").attr("onerror", "this.src=‘***********************************‘");
9.对图像的缩放:
1 BufferedImage buffImage = ImageIO.read(new ByteArrayInputStream(byteImg)); 2 int width = buffImage.getWidth(); 3 int height = buffImage.getHeight(); 4 int scaledH = (int)((float)height/(float)width*scaleWidth); 5 Image image = buffImage.getScaledInstance(scaleWidth, scaledH, buffImage.SCALE_REPLICATE); 6 BufferedImage bi = new BufferedImage(scaleWidth, scaledH, BufferedImage.TYPE_INT_RGB); 7 bi.getGraphics().drawImage(image, 0, 0, null); 8 ImageIO.write(bi, "jpg", file);
scaleImage