Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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 创建JPEG:将访问限制代码(JPEGImageEncoder)转换为";“安全”;代码_Java_Eclipse_Image_Api - Fatal编程技术网

Java 创建JPEG:将访问限制代码(JPEGImageEncoder)转换为";“安全”;代码

Java 创建JPEG:将访问限制代码(JPEGImageEncoder)转换为";“安全”;代码,java,eclipse,image,api,Java,Eclipse,Image,Api,我得到了以下代码,Eclipse将其(在JPEGImageEncoder行)标记为错误(访问限制)。我更改了Eclipse选项以使代码可编译,但我了解到该错误意味着该类(JPEGImageEncoder)可能无法由某些JRE实现(而不是Sun/Oracle实现)实现 那么,哪些代码应该没有访问限制,即完全安全的代码来做同样的事情(创建JPG图像) 也许我误解了,但是如果您只想将BuffereImage对象保存为jpeg,那么您可以这样做(从Java 1.4开始): 以下链接提供了更多信息: 如您

我得到了以下代码,Eclipse将其(在
JPEGImageEncoder
行)标记为错误(访问限制)。我更改了Eclipse选项以使代码可编译,但我了解到该错误意味着该类(
JPEGImageEncoder
)可能无法由某些JRE实现(而不是Sun/Oracle实现)实现

那么,哪些代码应该没有访问限制,即完全安全的代码来做同样的事情(创建JPG图像)


也许我误解了,但是如果您只想将BuffereImage对象保存为jpeg,那么您可以这样做(从Java 1.4开始):

以下链接提供了更多信息:

如您所见,它说JPEG、PNG、GIF、BMP和WBMP将始终受支持

如果您想设置压缩/质量,需要多做一点工作,但不会太多。假设您有一个BuffereImage和一个outFile:

IIOImage outputImage = new IIOImage(bufferedImage, null, null);

ImageWriter writer = ImageIO.getImageWritersByFormatName("jpeg").next();        
writer.setOutput(new FileImageOutputStream(outFile));
ImageWriteParam writeParam = writer.getDefaultWriteParam();
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writeParam.setCompressionQuality(.75f); // float between 0 and 1, 1 for max quality.
writer.write( null, outputImage, writeParam);

(从上一个答案中修复)

我又添加了几行。我也需要设置jpg的质量。ImageIO能做到吗?很好。我已经更新了答案,以显示如何设置jpeg压缩。
ImageIO.write(bufferedImage,"jpg",file);
IIOImage outputImage = new IIOImage(bufferedImage, null, null);

ImageWriter writer = ImageIO.getImageWritersByFormatName("jpeg").next();        
writer.setOutput(new FileImageOutputStream(outFile));
ImageWriteParam writeParam = writer.getDefaultWriteParam();
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writeParam.setCompressionQuality(.75f); // float between 0 and 1, 1 for max quality.
writer.write( null, outputImage, writeParam);