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 从零开始实现一个画图板.以及图像处理功能,代码可复现 这是一个学习分享博客,带你从零开始实现一个画图板.图像处理的小项目,为了降低阅读难度,本博客将画图板的一步步迭代优化过程展示给读者,篇幅 ...
随机推荐
- 关于 Vue 方法前面的美元符号
关于 Vue 方法前面的美元符号 学到这一段,不明白什么意思,然后手贱把 $ 删除了,出现未定义方法. vm.$watch('counter', function(nval, oval) { aler ...
- svn 提交代码 自动过滤技巧,自动过滤不想提交的文件和文件夹
原文:http://www.cnblogs.com/codealone/p/3208620.html 打开SVN客户端-----常规设置------全局忽略样式,添加 bin obj debug Re ...
- gcc gdb调试 (二)
GDB的命令概貌——————— 启动gdb后,就你被带入gdb的调试环境中,就可以使用gdb的命令开始调试程序了,gdb的命令可以使用help命令来查看,如下所示: /home/hchen> g ...
- php函数的实现
1.函数 汇编中函数对应的是一组独立的汇编指令,然后通过call指令实现函数的调用.PHP编译的opcode数组,与汇编指令对应. PHP用户自定义函数的实现就是将函数编译为独立的opcode ...
- Android应用程序如何调用shell脚本(一)
转自: Android应用程序如何调用shell脚本(一) 一般来说, Android 下的应用程序可以“直接”得到的最大的权限为 system ,但是如果我们需要在程序中执行某些需要 root 权限 ...
- BASIC-11_蓝桥杯_十六进制转十进制
注意事项: 1.长数据注意选择long long类型,用%ldd输出,防止数据溢出; 示例代码: #include <stdio.h>#include <string.h>#i ...
- bzoj3631 松鼠的新家
Description 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在“树”上.松鼠想邀 ...
- 求交错序列前N项和(15 分)
7-2 求交错序列前N项和(15 分) 本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和. 输入格式: 输入在一行中给出一个正整数N. 输出格式: 在 ...
- httpclient 用户名密码认证实例
import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.com ...
- appium 3-31603调试分析方法
1.Appium Log 清晰记录了所有的请求和结果 @Test public void testDebug() throws InterruptedException,IOException{ Mo ...