0
InputStream bais = new ByteArrayInputStream(b);
BufferedImage bImageFromConvert = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = bImageFromConvert.createGraphics();
g = cvrimg.getGraphics();
g.drawImage(bImageFromConvert, width, height, null);
ImageIO.write(bImageFromConvert, "png", new File("D:\\new.png"));

次の例外が発生しています。 java.lang.IllegalArgumentException: im == null!

私は何をすべきか ?

サンプルコードは次のとおりです。

BufferedImage cvrimg = ImageIO.read(file);
int height = cvrimg.getHeight();
int width = cvrimg.getWidth();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(new_img, "jpg", baos);
baos.flush();
byte[] imageInByte = baos.toByteArray();
byte[] b = new byte[imageInByte.length];
b[i] = fromUnsignedInt(b2);
InputStream bais = new ByteArrayInputStream(b);
BufferedImage bImageFromConvert = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

// int inBytes = bais.available();

Graphics g = bImageFromConvert.createGraphics();
g = cvrimg.getGraphics();
g.drawImage(bImageFromConvert, width, height, null);
bImageFromConvert=ImageIO.read(bais);
ImageIO.write(bImageFromConvert, "png", new File("D:\\new.png"));
4

1 に答える 1

1

入力ストリームを読み取っていないため、例外が発生しています。使用する

BufferedImage im = ImageIO.read(bais);

ファイルを読み取り、jpgファイルに書き込むコードからの単純なコンバーターpng

BufferedImage cvrimg = ImageIO.read(new File("/path/to/images/old.jpg"));
int height = cvrimg.getHeight();
int width = cvrimg.getWidth();
BufferedImage bImageFromConvert = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bImageFromConvert.createGraphics();
g.drawRenderedImage(cvrimg, null);
ImageIO.write(bImageFromConvert, "png", new File("/path/to/images/new.png"));
于 2012-11-04T10:44:27.707 に答える