ImageIO(图像处理)
1.通过ImageIO的read和writer,对图像文件进行处理。
BufferedImage buffImage = ImageIO.read(file);
// 将图像输出到Servlet输出流中。
ImageIO.write(buffImage, "jpg", response.getOutputStream());
2. 使用byteArray保存request获取的流数据
InputStream is = null;
byte[] byteArray = null;
ByteArrayOutputStream os = null;
try{
is = super.getRemoteReqStream(url);
byte[] temp = new byte[1024];
os = new ByteArrayOutputStream();
int iLength = 0;
while((iLength = is.read(temp, 0, 1024)) != -1){
os.write(temp, 0, iLength);
}
is.close();
byteArray = os.toByteArray();
ByteArrayOutputStream
3.FileUtils可对文件进行各种操作。
4.FileNameUtils可对文件名进行各种操作。
5. 通过Base64对image流文件转化(这里Base64使用的是Apache的Base64)
/**
* 通过Base64对图像数组进行转化为字符串
* @param byteArray
* @return
*/
@SuppressWarnings("static-access")
public static String getImageStrByBase64(byte[] byteArray){
String strImage = "";
// 空值判断
if(null == byteArray || byteArray.length == 0){
return strImage;
}
Base64 base64 = new Base64();
strImage = base64.encodeBase64String(byteArray);
return strImage;
} /**
* 通过Base64对图像数组进行转化为字符串
* @param byteArray
* @return
*/
@SuppressWarnings("static-access")
public static byte[] getImageByteByBase64(String strImage){
byte[] byteImg = null;
// 空值判断
if(StringUtils.isEmpty(strImage)){
return byteImg;
}
Base64 base64 = new Base64();
byteImg = base64.decodeBase64(strImage);
return byteImg;
}
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.对图像的缩放:
BufferedImage buffImage = ImageIO.read(new ByteArrayInputStream(byteImg));
int width = buffImage.getWidth();
int height = buffImage.getHeight();
int scaledH = (int)((float)height/(float)width*scaleWidth);
Image image = buffImage.getScaledInstance(scaleWidth, scaledH, buffImage.SCALE_REPLICATE);
BufferedImage bi = new BufferedImage(scaleWidth, scaledH, BufferedImage.TYPE_INT_RGB);
bi.getGraphics().drawImage(image, 0, 0, null);
ImageIO.write(bi, "jpg", file);
scaleImage
ImageIO(图像处理)的更多相关文章
- java处理图片--图片的缩放,旋转和马赛克化
这是我自己结合网上的一些资料封装的java图片处理类,支持图片的缩放,旋转,马赛克化.(转载请注明出处:http://blog.csdn.net/u012116457) 不多说,上代码: packag ...
- Atitit 图像处理底色变红的解决
Atitit 图像处理底色变红的解决 1.1. 原因 ImageIO bug ,alpha通道应该在保存jpg的时候排除1 1.2. 解决,自己移除alpha通道即可1 2. Image sav ...
- Java数字图像处理基础 - 必读
写了很多篇关于图像处理的文章,没有一篇介绍Java 2D的图像处理API,文章讨论和提及的 API都是基于JDK6的,首先来看Java中如何组织一个图像对象BufferedImage的,如图: 一个B ...
- 图像处理JPEGCodec类错误问题 毕业设计遇到的问题
图像处理JPEGCodec类已经从Jdk1.7移除 2014-06-16 20:01:26 分类: 架构设计与优化 著名测试工具jira在使用图像处理JPEGCodec类会报告以下信息: 我是这样用 ...
- Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本
Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本 1. 清理图片压缩图片尺寸 1 2. 所以要使用ImageWriter 1 3. Thumbnails质量压缩builder.o ...
- atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本
atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本 1. 去除边框思路原理 1 2. Thumbnailator 是一个用来生成图像缩略图.裁切. ...
- 数字图像处理(一)之灰度转换和卷积python实现
使用Python实现数字图像处理中如下功能: 彩色图像转成灰度图像 实现图像的相关&卷积操作 实现图像的高斯核卷积 使用的库和python版本如下: imageio:2.9.0 用于读取磁盘中 ...
- Java 图像处理(一)
曾几何时,Java图像处理已经被认为是太过鸡肋,就连Java的创始公司,在java图像处理方面也是浅尝辄止,可能相比较C++,Java在这方面的处理,确实差强人意. 不过Java类库中有一个叫JAI的 ...
- Java 从零开始实现一个画图板、以及图像处理功能,代码可复现
Java 从零开始实现一个画图板.以及图像处理功能,代码可复现 这是一个学习分享博客,带你从零开始实现一个画图板.图像处理的小项目,为了降低阅读难度,本博客将画图板的一步步迭代优化过程展示给读者,篇幅 ...
随机推荐
- 读写XML文档时,去掉新增加节点的“空命名空间”(xmlns=””)
在做对ReprotViewer编程时,想做一个用户可以更改显示/打印列的功能,大致看了下,只需要通过对rdlc文件中改变其<Hidden>节点值为false/true,即可实现对应某列的显 ...
- RAC3——RAC原理开始
1.RAC并发 RAC的本质是一个数据库,只不过现在这个数据库运行在了多台计算机上,在原先的单实例中,一个进程是否可以修改一条数据,取决于是否有其他进程(同一台计算机上)并发修改.在RAC环境下,这种 ...
- JUC线程池之 线程池的5种状态:Running, SHUTDOWN, STOP, TIDYING, TERMINATED
线程池有5种状态:Running, SHUTDOWN, STOP, TIDYING, TERMINATED. 线程池状态定义代码如下: private final AtomicInteger ctl ...
- Queque 方法对比和分类
添加类:方法 public boolean add(E e) 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 bo ...
- kibana 与 grafana
Kibana 和 Grafana 是两个开源工具,能可视化和推断大量日志数据内的趋势.Kibana 是一个分析和可视化平台,它可以让你浏览.可视化存储在Elasticsearch集群上排名靠前的日志数 ...
- arcgis license manager 10.2服务无法启动
(步骤)1. 用cmd切换到 license manager 安装目录,如 C:\Program Files (x86)\ArcGIS\License10.2\bin,输入: Lmgrd -z -c ...
- Django 配置总结
配置 app urls 项目下的urls.py from django.conf.urls import url,include urlpatterns = [ url(r'^BookApp/', i ...
- loadrunner怎么解决录制完成后脚本为空
第一步: 第二步: 设置完后就Ok了
- mysql分区表之一:分区原理和优缺点【转】
1.分区表的原理 分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分 ...
- javascript对象讲解
js的数据类型 基本数据类型:string undefined null boolean number 引用数据类型:object 二者的区别: 基本数据类型就是简单的赋值,引用数据 ...