2013-04-12 32 views
0

當我簡單地從另一這樣創建新圖像之後:「mime類型:應用」顯示器上的圖象而不是「mime類型:圖像」一ImageIO.write

public static void scaleByTwoRight(String src, String dest) 
    throws IOException { 
      BufferedImage bsrc = ImageIO.read(new File(src)); 
      int width   = bsrc.getWidth()/2; 
      int height   = bsrc.getHeight(); 
      BufferedImage bdest = bsrc.getSubimage(width, 0, width, height); 
      ImageIO.write(bdest,"PNG",new File(dest)); 
    } 

源文件(SRC)= C :... \漫畫\湘南Juna_龜聖多美11 \湘南Junaï龜尾聖多美11 - 091B.png 目標文件(目標)= C:... \漫畫\湘南Junaï龜尾聖多美11 - 091B_A.png

生成文件示例:https://docs.google.com/file/d/0B1vKCZzB5hxqYzNsUWF5RHA2Wm8/edit?usp=sharing

問題:新圖像有mimetype:app lication而不是MIME類型:圖像

我如何到達這樣的結論:我使用的功能來測試,如果該文件是一個圖像或不:

public static boolean isImage(String src) 
    throws IOException { 
      File f = new File(src); 
      String mimetype= new MimetypesFileTypeMap().getContentType(f); 
      String type = mimetype.split("/")[0]; 
      if(type.equals("image")){ 
       return true; 
      }else{ 
       System.out.println("mimetype: "+type); 
       return false; 
      } 
    } 

它不是一個巨大的如果MIME影響型是不正確的,但我更喜歡那個工作正常..

感謝您的幫助!

注: 我的Windows 7/32B JVM 1.7/Eclipse的赫利俄斯

+0

'String dest''dest'的值是什麼?請以[SSCCE](http://sscce.org/)的形式回答。 –

+0

功能:scaleByTwoRight(字符串SRC,字符串目標寄存器) 源文件(SRC)= C:\ ... \漫畫\湘南Juna_龜聖多美11 \湘南Junaï龜尾聖多美11 - 091B.png 目標文件(目標)= C:\ ... \ Manga \ ShonanJunaïGumi Tome 11 - 091B_A.png – Dax

+0

運行scaleByTwoRight函數後創建的目的地(圖片)的示例如下:https://docs.google.com/file/d/0B1vKCZzB5hxqYzNsUWF5RHA2Wm8 /編輯?usp = sharing – Dax

回答

0

您的代碼下運行是在我的機器工作正常。 我有Windows XP中,32位, 嘗試使用jpeg圖像,它只是返回mimetype作爲圖像/ jpeg。 希望你沒有試圖同時執行這兩個功能。 此外,目標文件名應包含適當的擴展名,如.jpeg或。 PNG等...

+0

嗨Mitpatoliya,當我從資源管理器檢查時,它看起來正確>文件>項目類型> PNG圖像。但是,如果我運行函數isImage(..)它返回應用程序類型。我認爲我必須在創建文件或類似的東西時手動創建mime類型。http://www.rgagnon.com/javadetails/java-0487.html – Dax

+0

您傳遞的目標路徑是什麼? – mitpatoliya

+0

*「嘗試使用jpeg圖像..」*爲什麼JPEG在代碼片段明顯設置爲創建PNG時? –