前段时间准备写一个桌面监控的软件,BufferedImage直接输出数据量比较庞大,而jpg的压缩方法是最快的方式。
但是在网上查得的压缩jpeg图片方法都用到了com.sun.image包,而这个包很容易引起eclipse报错的问题,虽然可以修改eclipse设置来规避,不过也会出现持续报错,甚至会无法import相关的class的问题
实际上java已经有一个javax.imageio包已经可以处理jpeg的图片数据了。
经过查看源码和在网上查询相关资料,已经成功实现相关功能。没有报错风险。
以下贴出代码,暂时使用内存I/O流,其他方式自行引申
编码:
/*传入一个BufferedImage对象,输出jpeg编码后的图片byte[]便于传输*/
public static byte[] encodeJPEG(BufferedImage img) {
//将数据放入内存输出流便于转化
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
//创建图片输出数据流
ImageOutputStream ious = ImageIO.createImageOutputStream(out);
//将图片输出为jpeg
ImageIO.write(img, "JPEG", ious);
//关闭输出流
ious.close();
byte[] bs = out.toByteArray();
out.close();
return bs;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
解析:
public static BufferedImage decodeJPEG(byte[] b) {
ByteArrayInputStream in = new ByteArrayInputStream(b);
try {
ImageInputStream iins = ImageIO.createImageInputStream(in);
BufferedImage img = ImageIO.read(iins);
in.close();
return img;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
分享到:
相关推荐
base64找不到下面连个jar包也可以解决 import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; 报错: Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required...
Java中进行图像I/O(即读图片和写图片,不涉及到复杂图像处理)有三个方法: Java Image I/O API,支持常见图片,从Java 2 version 1.4.0开始就内置了。 主页:...
例如:com.sun.image.codec.jpeg等。com.sun.*, sun.* 开头的包都是 JRE 的底层类库,未被归档化。引入jar包只是规避了过期和受限的API。直接引用即可,但不建议长期使用。例如您正在导入工程文件启动报错,此时引用...
Java开发中对图片的操作需要引入 com.sun.image.codec.jpeg,但有时引入这个包会报错,利用下面的操作可以完成解决这个问题
谷歌jpeg压缩算法源码+项目说明.zip谷歌jpeg压缩算法源码+项目说明.zip谷歌jpeg压缩算法源码+项目说明.zip谷歌jpeg压缩算法源码+项目说明.zip谷歌jpeg压缩算法源码+项目说明.zip谷歌jpeg压缩算法源码+项目说明.zip...
import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; 报错: Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required ...
JPEG压缩编码系统源代码
matlab开发-jpeg压缩的2ddcTidct.zip.zip
【程序老媛出品,必属精品,亲测校正,质量保证】 ...源码说明: 用MATLAB实现JPEG图像压缩算法,包括DCT变换,霍夫曼变换等算法,包含完整源码和注释,非常适合借鉴学习 适合人群:新手及有一定经验的开发人员
哈夫曼算法压缩jpeg算法源码+项目说明.zip哈夫曼算法压缩jpeg算法源码+项目说明.zip哈夫曼算法压缩jpeg算法源码+项目说明.zip哈夫曼算法压缩jpeg算法源码+项目说明.zip哈夫曼算法压缩jpeg算法...
简易的JPEG压缩程序(Matlab实现).rar
JPEG压缩技术可以说是所有图像压缩技术的基础。它适合静态图像的压缩,直接处理整个画面,压缩倍数为20-80倍,分辨率没有选择的余地。
网络游戏-基于卷积神经网络的JPEG压缩图像超分辨率重建方法.zip
JPEG压缩编码系统源代码.rar C语言
IJG is an informal group that writes and distributes a widely used free library for JPEG image compression. The current version is release 8c of 16-Jan-2011. This is a stable and solid foundation for...
import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; /** * @author WENLIANG * * 该类主要用于将图片重绘 */ public class RedrawImage { public RedrawImage() {} ...
javax.imageio.spi 包含用于 reader、writer、transcoder 和流的插件接口以及一个运行时注册表的 Java Image I/O API 包。 javax.imageio.stream Java Image I/O API 的一个包,用来处理从文件和流中产生的低级别 I...
基于MATLAB的JPEG压缩编程实现实例