Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java图像压缩:颜色变化_Java_Image Processing - Fatal编程技术网

Java图像压缩:颜色变化

Java图像压缩:颜色变化,java,image-processing,Java,Image Processing,我使用下面的代码来缩小图像大小。它将大小从1MB减少到250KB。它很好,但会改变图像的颜色 File input = new File("ImageTOCompress.jpg"); BufferedImage image = ImageIO.read(input); File compressedImageFile = new File("CompressedImage.jpg"); OutputStream os =new FileOutputStream(compressedImage

我使用下面的代码来缩小图像大小。它将大小从1MB减少到250KB。它很好,但会改变图像的颜色

File input = new File("ImageTOCompress.jpg");
BufferedImage image = ImageIO.read(input);

File compressedImageFile = new File("CompressedImage.jpg");
OutputStream os =new FileOutputStream(compressedImageFile);

Iterator<ImageWriter>writers = ImageIO.getImageWritersByFormatName("jpg");
ImageWriter writer = (ImageWriter) writers.next();

ImageOutputStream ios = ImageIO.createImageOutputStream(os);
writer.setOutput(ios);

ImageWriteParam param = writer.getDefaultWriteParam();

param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.05f);
writer.write(null, new IIOImage(image, null, null), param);

os.close();
ios.close();
writer.dispose();
File input=新文件(“ImageTOCompress.jpg”);
BuffereImage image=ImageIO.read(输入);
File compressedImageFile=新文件(“CompressedImage.jpg”);
OutputStream os=新文件OutputStream(compressedImageFile);
Iteratorwriters=ImageIO.getImageWritersByFormatName(“jpg”);
ImageWriter writer=(ImageWriter)writers.next();
ImageOutputStream ios=ImageIO.createImageOutputStream(os);
writer.setOutput(ios);
ImageWriteParam参数=writer.getDefaultWriteParam();
参数setCompressionMode(ImageWriteParam.MODE_显式);
参数设置压缩质量(0.05f);
writer.write(null,新IIOImage(image,null,null),param);
os.close();
ios.close();
writer.dispose();

请帮我保持图片颜色不变…谢谢

它以什么方式改变了它?首先我要问,你理解“有损”和“无损”压缩之间的区别吗?您是否了解调用“setCompressionQuality(0.05f)”对图像质量的影响?更具体地说,您是否尝试过其他值?已解决..事实上,验证输入文件是我的错误…该文件实际上是tiff,我认为它是jpg格式..这就是上面的程序无法工作的原因。谢谢戴尼尔。