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(图像处理)的更多相关文章

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

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

  2. Atitit  图像处理底色变红的解决

    Atitit  图像处理底色变红的解决 1.1. 原因  ImageIO  bug ,alpha通道应该在保存jpg的时候排除1 1.2. 解决,自己移除alpha通道即可1 2. Image sav ...

  3. Java数字图像处理基础 - 必读

    写了很多篇关于图像处理的文章,没有一篇介绍Java 2D的图像处理API,文章讨论和提及的 API都是基于JDK6的,首先来看Java中如何组织一个图像对象BufferedImage的,如图: 一个B ...

  4. 图像处理JPEGCodec类错误问题 毕业设计遇到的问题

     图像处理JPEGCodec类已经从Jdk1.7移除 2014-06-16 20:01:26 分类: 架构设计与优化 著名测试工具jira在使用图像处理JPEGCodec类会报告以下信息: 我是这样用 ...

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

    Atitit. 图像处理jpg图片的压缩  清理垃圾图片 java版本 1. 清理图片压缩图片尺寸 1 2. 所以要使用ImageWriter 1 3. Thumbnails质量压缩builder.o ...

  6. atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本

    atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本 1. 去除边框思路原理 1 2. Thumbnailator 是一个用来生成图像缩略图.裁切. ...

  7. 数字图像处理(一)之灰度转换和卷积python实现

    使用Python实现数字图像处理中如下功能: 彩色图像转成灰度图像 实现图像的相关&卷积操作 实现图像的高斯核卷积 使用的库和python版本如下: imageio:2.9.0 用于读取磁盘中 ...

  8. Java 图像处理(一)

    曾几何时,Java图像处理已经被认为是太过鸡肋,就连Java的创始公司,在java图像处理方面也是浅尝辄止,可能相比较C++,Java在这方面的处理,确实差强人意. 不过Java类库中有一个叫JAI的 ...

  9. Java 从零开始实现一个画图板、以及图像处理功能,代码可复现

    Java 从零开始实现一个画图板.以及图像处理功能,代码可复现 这是一个学习分享博客,带你从零开始实现一个画图板.图像处理的小项目,为了降低阅读难度,本博客将画图板的一步步迭代优化过程展示给读者,篇幅 ...

随机推荐

  1. dbt 包管理

    dbt 可以方便的支持基于git 的包管理 依赖申明 位置 dbt_project.yml 中的repositories 或者使用packages.yaml 格式 dbt_project.yml: r ...

  2. grandstack graphql 开发模型

    当前grandstack 支持两类开发方式 js (使用Neo4j-graphql-js) 插件模型 js 模型 参考https://github.com/rongfengliang/grand-st ...

  3. 【Android界面实现】AppWidght全面学习之电量监控小部件的实现具体解释

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/bz419927089/article/details/35791047 前几天翻看之前下载的各种资料 ...

  4. 修改oracle系统参数spfile导致数据库无法启动解决

    错误示范: SQL> alter system set nls_date_format='yyyy-mm-dd 24hh:mi:ss' scope=spfile;System altered.我 ...

  5. phper必知必会(二)

    1.说说你对进程,线程以及协程的理解 进程:是系统进行资源分配和调度的基本单位,是基本操作系统结构的基础.进程是程序基本执行的实体.进程与进程之间是独立的,拥有完全独立的地址空间,进程的切换只发生在内 ...

  6. Gitlab Jenkins WebHook 持续集成配置踩坑记

    Jenkins相关介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 目的 配置Gitla ...

  7. Linux内核深入研究之进程的线性地址空间-传统版

    引言: 了解Linux环境下,进程的地址空间划分,对于我们理解Linux应用程序有很大的帮助,否则会被New与Malloc之类的指针操作弄的晕头转向,本文基于Linux内核讲述了Linux/Unix线 ...

  8. 基于jQuery.i18n.properties实现前端网站语言多版本

    我是参考播客做了个demo:http://blog.csdn.net/aixiaoyang168/article/details/49336709 jQuery.i18n.properties采用.p ...

  9. 实验八 c排序算法

    8.1 #include<stdio.h> int main(){ int a[5],i,j,k,t,z; //输入5个元素进入数组 for(i=0;i<5;i++) scanf(& ...

  10. Windows下永久解决数据库乱码 utf8 转 gbk

    产生乱码原因 因为windows终端的默认字符集是gbk编码,而mysql数据库是utf8的编码,所以会产生乱码问题 解决乱码问题(临时修改) 询当前数据库默认编码: mysql> show v ...