[英]Converting images from .bmp to jpeg2000 on java and eclipse error
我在這里看到了一些示例,並在我的計算機上安裝了Java Advanced Imaging Image I / O Tools,因為很明顯它是處理JPEG2000圖像的必要條件。
安裝后我可以導入庫
例如
import com.sun.media.imageio.plugins。*;
導入后,我應該能夠使用該庫的構造函數或方法,但我收到此錯誤:
“訪問限制:類型'J2KImageWriteParam'不是API(對所需庫'C:\\ Program Files(x86)\\ Java \\ jre1.8.0_77 \\ lib \\ ext \\ jai_imageio.jar'的限制')”
經過一些研究,我發現我可以改變eclipse偏好並忽略該錯誤。
我經歷過這樣的方式:首選項 - > Java - >編譯器 - >錯誤/警告 - >不推薦使用和受限制的API。 然后我將錯誤更改為警告。 但是現在我無法使用該庫有效,因為eclipse不會對該庫提出任何建議。
我的第一個問題是; 如果還有更好的方法嗎? 或者也許在eclipse中使用這個庫有效的另一種方法?
編輯:我發現它是32位和64位版本的復雜功能。 安裝32位JDK並引用jai_imageio.jar后它運行正常。
第二; 任何人都可以給我一個簡單的例子,將.bmp圖像轉換為jpeg2000圖像。 這對我來說對於不受歡迎的情況有很大幫助。
謝謝
您需要在導入中使用這些:
import javax.imageio.*;
import javax.imageio.stream.*;
import com.sun.media.imageio.plugins.jpeg2000.*;
import com.sun.media.imageio.stream.*;
和這些罐子
jai_imageio.jar;jai_codec.jar;jai_core.jar
這是一個運行良好的例子 - 但不知道生成的j2k是否有效 - 使用你的j2000查看器來檢查。
public void toJ2000(String inputFile, String outputFile) throws IOException {
J2KImageWriteParam iwp = new J2KImageWriteParam();
FileInputStream fis = new FileInputStream(new File(inputFile));
BufferedImage image = ImageIO.read(fis);
fis.close();
if (image == null)
{
System.out.println("If no registered ImageReader claims to be able to read the resulting stream");
}
Iterator writers = ImageIO.getImageWritersByFormatName("JPEG2000");
String name = null;
ImageWriter writer = null;
while (name != "com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageWriter") {
writer = (ImageWriter) writers.next();
name = writer.getClass().getName();
System.out.println(name);
}
File f = new File(outputFile);
long s = System.currentTimeMillis();
ImageOutputStream ios = ImageIO.createImageOutputStream(f);
writer.setOutput(ios);
J2KImageWriteParam param = (J2KImageWriteParam) writer.getDefaultWriteParam();
IIOImage ioimage = new IIOImage(image, null, null);
writer.write(null, ioimage, param);
System.out.println(System.currentTimeMillis() - s);
writer.dispose();
ios.flush();
ios.close();
image.flush();
}
public static void main(String[] args) {
TR t=new TR();
try {
t.toJ2000("yel.png", "yel.j2k");
}
catch (Exception ex) { ex.printStackTrace(); }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.