39

にロードされて保存されている透明度のある PNG ファイルがありますBufferedImage。これは である必要BufferedImageがありTYPE_INT_ARGBます。ただし、使用するgetType()と、戻り値はTYPE_CUSTOM2 ( ) ではなく 0 ( ) になりTYPE_INT_ARGBます。

これは私がロードする方法です.png

public File img = new File("imagen.png");

public BufferedImage buffImg = 
    new BufferedImage(240, 240, BufferedImage.TYPE_INT_ARGB);

try { 
    buffImg = ImageIO.read(img ); 
} 
catch (IOException e) { }

System.out.Println(buffImg.getType()); //Prints 0 instead of 2

BufferedImage.png を読み込んで保存し、作成するにはどうすればよいTYPE_INT_ARGBですか?

4

3 に答える 3

83
BufferedImage in = ImageIO.read(img);

BufferedImage newImage = new BufferedImage(
    in.getWidth(), in.getHeight(), BufferedImage.TYPE_INT_ARGB);

Graphics2D g = newImage.createGraphics();
g.drawImage(in, 0, 0, null);
g.dispose();
于 2012-05-01T00:03:48.093 に答える
2

ファイルから BufferedImage を作成し、TYPE_INT_RGB にします

import java.io.*;
import java.awt.image.*;
import javax.imageio.*;
public class Main{
    public static void main(String args[]){
        try{
            BufferedImage img = new BufferedImage( 
                500, 500, BufferedImage.TYPE_INT_RGB );
            File f = new File("MyFile.png");
            int r = 5;
            int g = 25; 
            int b = 255;
            int col = (r << 16) | (g << 8) | b;
            for(int x = 0; x < 500; x++){
                for(int y = 20; y < 300; y++){
                    img.setRGB(x, y, col);
                }
            }
            ImageIO.write(img, "PNG", f); 
        }
        catch(Exception e){ 
            e.printStackTrace();
        }
    }
}

これにより、上部に大きな青い筋が描かれます。

ARGB が必要な場合は、次のようにします。

    try{
        BufferedImage img = new BufferedImage( 
            500, 500, BufferedImage.TYPE_INT_ARGB );
        File f = new File("MyFile.png");
        int r = 255;
        int g = 10;
        int b = 57;
        int alpha = 255;
        int col = (alpha << 24) | (r << 16) | (g << 8) | b;
        for(int x = 0; x < 500; x++){
            for(int y = 20; y < 30; y++){
                img.setRGB(x, y, col);
            }
        }
        ImageIO.write(img, "PNG", f);
    }
    catch(Exception e){
        e.printStackTrace();
    }

MyFile.png を開くと、上部に赤い筋が入っています。

于 2015-04-12T22:24:42.247 に答える