1

データベースに追加する前に、すべての画像を固定解像度にサイズ変更しています。この目的のために、私は FileUpload と次のコードを使用しています:-

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)

目的の解像度の画像が得られますが、削除できない不要な黒い背景があります。前の画像: http://www.rocketcampus.com/images/test.png 後の画像: http://static.appcanvas.com/1334085929080.png

4

1 に答える 1

3

のタイプを変更して、背景を透明にすることができBufferedImageますBufferedImage.TYPE_INT_ARGB

これは私のために働いた:

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);

}
于 2012-04-10T20:17:29.703 に答える