2012-04-10 12 views
1

Ich habe jedes Bild in eine feste Auflösung geändert, bevor ich es zu meiner Datenbank hinzufüge. zu diesem Zweck i mit Fileupload wurden und folgenden Code: -Wie entferne ich unnötigen schwarzen Hintergrund, nachdem ich das Bild auf eine feste Auflösung skaliert habe?

logo_name = System.currentTimeMillis() + ".png"; 
      File uploadedFile = new File("/www/static.appcanvas.com/"+logo_name); 
      BufferedImage bi = ImageIO.read(item.getInputStream()); 
      Image img = bi.getScaledInstance(125,125,Image.SCALE_SMOOTH); 
      BufferedImage img_logo = new BufferedImage(125,125,BufferedImage.TYPE_INT_RGB); 
      Graphics2D g = img_logo.createGraphics(); 
      g.drawImage(img,0,0,null); 
      if(g != null) g.dispose(); 
      ImageIO.write(img_logo,"png",uploadedFile) 

ich das Bild von der gewünschten Auflösung zu bekommen, aber es ist ein unnötiger schwarzer Hintergrund, die ich nicht in der Lage bin zu entfernen. Bild vor: http://www.rocketcampus.com/images/test.png Bild nach: http://static.appcanvas.com/1334085929080.png

Antwort

3

können Sie die Art Ihrer BufferedImageBufferedImage.TYPE_INT_ARGB ändern, um einen transparenten Hintergrund zu haben.

Das ist für mich gearbeitet:

public static void main(String[] args) throws IOException { 
    FileInputStream item = new FileInputStream("D:/tmp/OpenFlexo_07.gif"); 
    String logo_name = System.currentTimeMillis() + ".png"; 
    File uploadedFile = new File("d:/www/static.appcanvas.com/" + logo_name); 
    BufferedImage bi = ImageIO.read(item); 
    Image img = bi.getScaledInstance(125, 125, Image.SCALE_SMOOTH); 
    BufferedImage img_logo = new BufferedImage(125, 125, BufferedImage.TYPE_INT_RGB); 
    Graphics2D g = img_logo.createGraphics(); 
    g.drawImage(img, 0, 0, null); 
    if (g != null) { 
     g.dispose(); 
    } 
    uploadedFile.getParentFile().mkdirs(); 
    uploadedFile.createNewFile(); 
    ImageIO.write(img_logo, "png", uploadedFile); 

} 
Verwandte Themen