2016-08-23 84 views
-1

我有一個.jp2圖像文件,我想將其轉換爲.jpgServiceConfigurationError將.jp2圖像文件轉換爲.jpg

BufferedImage background = ImageIO.read(new File("images\\" 
    + randNum + ".jp2")); 
    ImageIO.write(background, "jpg", new File("images\\" + randNum 
       + ".jpg")); 

我有此異常:

java.util.ServiceConfigurationError: javax.imageio.spi.ImageWriterSpi: Provider com.github.jaiimageio.jpeg2000.impl.J2KImageWriterSpi could not be instantiated 
... 
Caused by: java.lang.NoClassDefFoundError: com/github/jaiimageio/impl/common/PackageUtil 
... 
Caused by: java.lang.ClassNotFoundException: com.github.jaiimageio.impl.common.PackageUtil 

更新

顯然,衝突中使用不同庫中的類發生,在這裏我有兩個jai_imageiojai-imageio-jpeg2000,我解決了這個問題通過簡單地刪除其中之一。

+0

你試過這個 - http://stackoverflow.com/a/356650/3398732? – CodeWalker

+0

我沒有得到任何錯誤,你的代碼perferctly創建一個jpg文件。你能否檢查你的配置? – erolkaya84

+0

@CodeWalker圖片轉碼不起作用,同樣的錯誤,謝謝,這肯定是配置的問題。 – TiMr

回答

0

我運行這段代碼,它創建了一個新的jpg文件。我希望它能幫助你。

package yourPackage; 

import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import java.util.Random; 

import javax.imageio.ImageIO; 

public class ImageConverter { 


    public static void main(String[] args) throws IOException { 
     int randNum = 1; 
     convertImage(randNum);  

    } 

    private static void convertImage(int randNum) throws IOException { 
     try { 
      File foundFile = new File("c:\\images\\" + randNum + ".jp2"); 
      BufferedImage background = ImageIO.read(foundFile); 
      ImageIO.write(background, "jpg", new File("c:\\images\\" + randNum + ".jpg")); 
      System.out.println("jpg file is generated"); 
     } catch (Exception e) { 
      // TODO: handle exception 
      System.out.println("No file " + randNum +".jp2 found"); 
     } 

    } 
} 
+0

我仍然收到相同的錯誤,並沒有創建jpg文件,您認爲導入中是否存在衝突? – TiMr

+0

@TiyebBellal我已經更新了我的答案。我希望這會對你有用。 – erolkaya84

+0

我已經嘗試使用你的方法和調試後,我發現這條指令發生異常:'BufferedImage background = ImageIO.read(foundFile);' – TiMr