ImageIO(图像处理)

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

时间: 2024-12-19 14:12:45

ImageIO(图像处理)的相关文章

java处理图片--图片的缩放,旋转和马赛克化

这是我自己结合网上的一些资料封装的java图片处理类,支持图片的缩放,旋转,马赛克化.(转载请注明出处:http://blog.csdn.net/u012116457) 不多说,上代码: package deal; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.geom.AffineTransform; impo

图像处理之简单数字水印 - 文字轧花效果

http://blog.csdn.net/jia20003/article/details/7338614 图像处理之文字轧花效果- 简单数字水印 @ gloomyfish 首先看一下效果,左边是一张黑白的文字图像,右边是混合之后的数字水印效果 实现原理 主要是利用位图块迁移算法,首先提取文字骨架,宽度为一个像素.然后将提取的骨架,按 照一定的像素值填充到目标图像中即可.关于位图块迁移算法说明请看这里: http://en.wikipedia.org/wiki/Bit_blit 程序思路: 1.

【图像处理】第一次实验

1.任务说明 打开一幅图像,进行直方图均衡.将灰度线性变化,将灰度拉伸. 2.算法原理 1)        图像灰度化 在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫做灰度值,灰度范围为0-255.一般有四种方法对彩色进行灰度化,分别为: 分量法,最大值法,平均值法和加权平均法.本实验中采用平均值法,即 2)        直方图均衡 直方图表示数字图像中每一个灰度级与其出现频率间的统计关系.设有某一个灰度等级,属于该灰度等级的像素个数为nk,图像总像素个数为n,

用 python skimage做图像处理

导言:由于经常需要处理图像,习惯了matlab那么好用的图像处理工具箱,搬到python后有点不知所措了.搜了下python图像处理方面的库,好多PIL的教程,但是无奈的是PIL和numpy等结合不好,而且半天找不到图像处理的函数在哪里,只好作罢:终于搜到了skimage,:-),喜出望外,因为它是和scipy.numpy可以完美结合的,那么就可以很好的使用numpy了.废话不多说,直接上干货吧. step 1 概览 学习一个python库第一步是干啥?百度.Google搜教程?No,这不是我的

图像处理之基于NCC模板匹配识别

一:基本原理 NCC是一种基于统计学计算两组样本数据相关性的算法,其取值范围为[-1, 1]之间,而对图像来说,每个像素点都可以看出是RGB数值,这样整幅图像就可以看成是一个样本数据的集合,如果它有一个子集与另外一个样本数据相互匹配则它的ncc值为1,表示相关性很高,如果是-1则表示完全不相关,基于这个原理,实现图像基于模板匹配识别算法,其中第一步就是要归一化数据,数学公式如下: 二:实现步骤 (1)      获取模板像素并计算均值与标准方差.像素与均值diff数据样本 (2)      根据

Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本

Atitit. 图像处理jpg图片的压缩  清理垃圾图片 java版本 1. 清理图片压缩图片尺寸 1 2. 所以要使用ImageWriter 1 3. Thumbnails质量压缩builder.outputQuality(0.9); 2 4. attilax框架的处理 code 2 5. 到一篇文章提到如何控制jpg图片后压缩的质量 3 6. 参考 4 1. 清理图片压缩图片尺寸 目标::300kb>>>10kb.. 处理流程:::scale,outputQuality(0.5) 裁

Java图像处理

要求实现简单的图像处理功能:     (1)打开一副图像:     (2)对打开的图像进行简单处理,至少包括两种操作,如均值滤波.直方图均衡化等:     (3)对处理之后的图像进行保存: import java.awt.EventQueue;import java.awt.event.*;import java.io.*;import javax.swing.*; /** * A program for viewing images. * @version 1.22 2017-3-17 * @

Atitit &#160;图像处理底色变红的解决

Atitit  图像处理底色变红的解决 1.1. 原因  ImageIO  bug ,alpha通道应该在保存jpg的时候排除1 1.2. 解决,自己移除alpha通道即可1 2. Image saved in JavaFX as jpg is pink toned1 1.1. 原因  ImageIO  bug ,alpha通道应该在保存jpg的时候排除 It looks like you are encountering existing bugs in the ImageIO or Java

图像处理之加减乘除

昨天和同学一起去蹭Oracle数据库的课,老师很Nice,学到了两点.第一点B树索引,第二点位图索引. 两种很有用的数据结构,这几天好好研究研究.出乎意料的是:下课老师说我们可以去上机,真好嘿嘿,第二节课英语听力,就没去了. 今天上机(数字图像处理)用java写的图像 加减乘除操作,效果和Matlab的一比很差,不过还是和大家分享下吧! 这是原图: /* * 图像处理 */ import java.awt.BorderLayout; import java.awt.Color; import j