java中JPEGImageEncoder的用法
答案:2 悬赏:20 手机版
解决时间 2021-02-05 15:41
- 提问者网友:暮烟疏雨之际
- 2021-02-05 06:12
java中JPEGImageEncoder的用法
最佳答案
- 五星知识达人网友:大漠
- 2021-02-05 06:43
String srcFileName="x:\\dd\\test.jpg";//源图像路径
String destFileName="x:\\dd\\test.jpg";//源图像路径
BufferedImage originalPic = ImageIO.read(new FileInputStream(srcFileName));
int imageWidth = originalPic.getWidth();
int imageHeight = originalPic.getHeight();
//产生新的图像缓冲对象
BufferedImage newBufferedImage = new BufferedImage(imageWidth, imageHeight,
BufferedImage.TYPE_3BYTE_BGR);
//颜色转换(黑白)
ColorConvertOp cco = new ColorConvertOp(ColorSpace
.getInstance(ColorSpace.CS_GRAY), null);
cco.filter(originalPic, newBufferedImage);
FileOutputStream fos = new FileOutputStream(destFileName);
if (destFileName.toLowerCase().endsWith(".gif")) {
ImageIO.write(newBufferedImage, "gif", fos);
}
if (destFileName.toLowerCase().endsWith(".png")) {
ImageIO.write(newBufferedImage, "png", fos);
}
//针对jpeg、jpg设置输出编码
if ((destFileName.toLowerCase().endsWith(".jpg"))
|| (destFileName.toLowerCase().endsWith(".jpeg"))) {
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(newBufferedImage);
param.setQuality(1.0F, false);
encoder.encode(newBufferedImage);
}
fos.flush();
fos.close();
重点解释一下:
针对jpeg、jpg设置输出编码
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
String destFileName="x:\\dd\\test.jpg";//源图像路径
BufferedImage originalPic = ImageIO.read(new FileInputStream(srcFileName));
int imageWidth = originalPic.getWidth();
int imageHeight = originalPic.getHeight();
//产生新的图像缓冲对象
BufferedImage newBufferedImage = new BufferedImage(imageWidth, imageHeight,
BufferedImage.TYPE_3BYTE_BGR);
//颜色转换(黑白)
ColorConvertOp cco = new ColorConvertOp(ColorSpace
.getInstance(ColorSpace.CS_GRAY), null);
cco.filter(originalPic, newBufferedImage);
FileOutputStream fos = new FileOutputStream(destFileName);
if (destFileName.toLowerCase().endsWith(".gif")) {
ImageIO.write(newBufferedImage, "gif", fos);
}
if (destFileName.toLowerCase().endsWith(".png")) {
ImageIO.write(newBufferedImage, "png", fos);
}
//针对jpeg、jpg设置输出编码
if ((destFileName.toLowerCase().endsWith(".jpg"))
|| (destFileName.toLowerCase().endsWith(".jpeg"))) {
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(newBufferedImage);
param.setQuality(1.0F, false);
encoder.encode(newBufferedImage);
}
fos.flush();
fos.close();
重点解释一下:
针对jpeg、jpg设置输出编码
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
全部回答
- 1楼网友:青灯有味
- 2021-02-05 08:08
jpegcodec.createjpegencoder的作用是创建一个和指定输出流关联的jpegimageencoder对象。
你这里的问题主要是输出流使用了response的输出流,如果这个代码是在servlet中书写的话,是没有问题的,但是,现在你是书写在jsp中,jsp将被传输给客户端,说白了,response的输出流已经被占用了,这里还向其中写图片的内容,所以就会出错。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯