Java 如何将jpeg图像转换为jpeg2000无损压缩图像?

Java 如何将jpeg图像转换为jpeg2000无损压缩图像?,java,jai,jpeg2000,Java,Jai,Jpeg2000,我正在使用java压缩图像 我想用jpeg2000无损压缩图像 请提出解决方案 File imageFile = new File("C:\\Users\\Public\\Pictures\\Sample Pictures\\Chrysanthemum.jpg"); File compressedImageFile = new File("C:\\Users\\Public\\Pictures\\Sample Pictures\\decompjai.jpg"); InputStream is

我正在使用java压缩图像

我想用jpeg2000无损压缩图像

请提出解决方案

File imageFile = new File("C:\\Users\\Public\\Pictures\\Sample Pictures\\Chrysanthemum.jpg");
File compressedImageFile = new File("C:\\Users\\Public\\Pictures\\Sample Pictures\\decompjai.jpg");

InputStream is = new FileInputStream(imageFile);
OutputStream os = new FileOutputStream(compressedImageFile);

BufferedImage image = ImageIO.read(is);

// get all image writers for JPG format
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jp2k");

if (!writers.hasNext())
    throw new IllegalStateException("No writers found");

ImageWriter writer = (ImageWriter) writers.next();

J2KImageWriter
J2KImageWriteParam jwp =  (J2KImageWriteParam) writer.getDefaultWriteParam();
// J2KImageWriteParam jwp =  new J2KImageWriteParam();
boolean lossless = true;
jwp.setLossless(lossless);  

// jwp.setFilter(J2KImageWriteParam.FILTER_97);  
if (!lossless) {  
      jwp.setEncodingRate(8.0 / 2);  
}  

// ByteArrayOutputStream baos = new ByteArrayOutputStream();  
try {  
      ImageOutputStream ios = ImageIO.createImageOutputStream(os);  
      writer.setOutput(ios);  
      writer.write(null, new IIOImage(image, null, null), jwp);  
      ios.flush();  
      ios.close();  
} catch (IOException e) {  
      e.printStackTrace();  
}  
File imageFile=新文件(“C:\\Users\\Public\\Pictures\\Sample Pictures\\jummy.jpg”);
File compressedImageFile=新文件(“C:\\Users\\Public\\Pictures\\Sample Pictures\\decompajai.jpg”);
InputStream is=新文件InputStream(imageFile);
OutputStream os=新文件OutputStream(compressedImageFile);
BuffereImage image=ImageIO.read(is);
//获取JPG格式的所有图像编写器
迭代器编写器=ImageIO.getImageWritersByFormatName(“jp2k”);
如果(!writers.hasNext())
抛出新的非法状态异常(“未找到写入程序”);
ImageWriter writer=(ImageWriter)writers.next();
J2KImageWriter
J2KImageWriteParam jwp=(J2KImageWriteParam)writer.getDefaultWriteParam();
//J2KImageWriteParam jwp=新的J2KImageWriteParam();
布尔无损=真;
jwp.setLossless(无损);
//jwp.setFilter(J2KImageWriteParam.FILTER_97);
如果(!无损){
jwp.setEncodingRate(8.0/2);
}  
//ByteArrayOutputStream bas=新的ByteArrayOutputStream();
试试{
ImageOutputStream ios=ImageIO.createImageOutputStream(os);
writer.setOutput(ios);
write.write(null,新IIOImage(image,null,null),jwp);
ios.flush();
ios.close();
}捕获(IOE){
e、 printStackTrace();
}  
我正在尝试上面的代码。

查看JPEG2000 Java编码器/解码器项目。(您可以找到源代码)

我先试试,因为您的系统可能有JPEG2000格式的提供程序


否则:显然是针对java的。

为什么是JPG2000而不是其他无损格式(如PNG)?你用哪种格式得到图像?文件,下载,位图…?这是我的要求。Jpeg图像或png图像。到目前为止你有什么?如果你能以代码的形式提供一些上下文,你会更容易得到帮助……请看上面我的代码,我正在尝试这是你知道的另一个例子,请发布。在上面的链接中,我找不到一些富有成效的例子。@Sivam您应该自己阅读文档。因此,这不是编码服务。