簡體   English   中英

如何實現jpeg無損?

[英]How to achieve jpeg lossless?

如何在Java中實現jpeg-lossess?

ImageWriter writer = (ImageWriter) ImageIO.getImageWritersByFormatName("JPEG-LS").next();
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionType("JPEG-LS");
writer.setOutput(ImageIO.createImageOutputStream(new File("C:\\Users\\RileyRen\\Desktop\\123.jpg")));
writer.write(null, new IIOImage(subBufferedImage, null, null), param);

會拋出異常:

Exception in thread "main" 
    java.lang.IllegalArgumentException: Unknown compression type!
    at javax.imageio.ImageWriteParam.setCompressionType(ImageWriteParam.java:1041)
    at com.demandforce.ImageCrop.main(ImageCrop.java:59)

param.getCompressionTypes()僅打印[JPEG]

使用JAI (版本1.1.3):

    PlanarImage input = JAI.create("fileload", "C:\\Users\\RileyRen\\Desktop\\test.jpg");
    ParameterBlock pb = new ParameterBlock();
    pb.addSource(input);
    pb.add(x);
    pb.add(y);
    pb.add(width);
    pb.add(height);
    PlanarImage output = JAI.create("crop",pb,null);
    JAI.create("filestore",output,"C:\\Users\\RileyRen\\Desktop\\123.jpg","JPEG-LS");

還拋出異常:

Exception in thread "main" 
    java.lang.IllegalArgumentException: FileStore The specified format has no associated registered ImageCodec.
    at javax.media.jai.JAI.createNS(JAI.java:1087)
    at javax.media.jai.JAI.create(JAI.java:973)
    at javax.media.jai.JAI.create(JAI.java:1621)
    at com.demandforce.ImageCrop.main(ImageCrop.java:103)

你能寫個樣本嗎?

標准Java沒有JPEG-LS的壓縮類型。

您可以下載並使用JAI(Java高級映像)API,盡管我相信它包括這樣的壓縮類型。

可以從這里下載

第一個代碼段有一個錯字:

param.setCompressionType("JPEG-lS");

它一定要是

param.setCompressionType("JPEG-LS");

(全部大寫)。 我認為這是正確的,應該可以。

要查詢可能的類型,請使用param.getCompressionTypes() (如注釋中所述)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM