2012-07-17 41 views
5

Tôi gặp sự cố khi viết tệp đệm vào jpg tệp. trong phương pháp của tôi, tôi nhận được một bufferedimage như thông số mà tôi cần phải viết trong một File-ImageIO không thể ghi hình ảnh đệm vào tệp

đây là những gì tôi đang làm:

public boolean writeToFile(BufferedImage buff,String savePath) { 

     try { 

      System.out.println(buff.toString()); 
      ImageIO.write(buff, ".jpg", new File(savePath)); 
      return true; 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

ở đây là những gì được in bằng buff.toString():

[email protected]: type = 1 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0 IntegerInterleavedRaster: width = 1024 height = 172 #Bands = 3 xOff = 0 yOff = 0 dataOffset[0] 0 

chương trình chạy tốt mà không có bất kỳ ngoại lệ nào, nhưng kích thước tệp jpg được tạo là 0 bytes

i trie d viết hình ảnh mà không sử dụng ImageIO:

public boolean writeToFile(BufferedImage buff,String savePath) { 



     try { 

      System.out.println("got image : " + buff.toString()); 
      Iterator iter = ImageIO.getImageWritersByFormatName("jpeg"); 
      ImageWriter writer = (ImageWriter)iter.next(); 
      ImageWriteParam iwp = writer.getDefaultWriteParam(); 


      iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); 
      iwp.setCompressionQuality(.5f); 


      File file = new File(savePath); 
      FileImageOutputStream output = new FileImageOutputStream(file); 
      writer.setOutput(output); 
      IIOImage image = new IIOImage(buff, null, null); 
      writer.write(null, image, iwp); 
      writer.dispose(); 

      return true; 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return false; 
    } 

Và điều này hoàn toàn ổn.

Tại sao nó không hoạt động với ImageIO?

Trả lời

8

Xóa . khỏi tên định dạng của bạn.

ImageIO.write(buff, "jpg", new File(savePath)); 
+0

Hoạt động của nó! Cảm ơn – JAVAGeek

4

Tin hay không, nó chỉ là ".jpg" này, thay đổi nó để "jpg" và nó sẽ hoạt động tốt.

Tôi gặp vấn đề tương tự nhưng tôi đã xem số ImageIO và tìm thấy số này link.