将byte []转换为BufferedImage

时间:2017-11-21 05:25:16

标签: java byte bufferedimage

我在将byte []转换为BufferedImage方面遇到了问题。我知道有很多帖子和问题 - 答案,但我只能看看为什么我的代码是错误的。 (错误:线程中的异常" main" java.lang.IllegalArgumentException:image == null!)

谢谢!

try {
        String hex = "57656c636f6d652c206d7920667269656e642e";
        byte[] im = DatatypeConverter.parseHexBinary(hex);
        InputStream in = new ByteArrayInputStream(im);
        BufferedImage bImageFromConvert = ImageIO.read(in);
        ImageIO.write(bImageFromConvert, "jpg", new File("c:/welcome.jpg"));
    } catch (Exception ex) {
    }

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您只需要使用

File newfile = new File("c:/welcome.jpg"); 
newfile.exists();

检查newfile是否存在。

答案 1 :(得分:0)

行。我做了什么滑溜溜告诉和工作。谢谢。代码如下。

try {
        Font font = new Font("Arial", 0, 32);
        BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
        FontMetrics fm = img.getGraphics().getFontMetrics(font);
        int width = fm.stringWidth("Welcome, my friend.");
        int height = fm.getHeight();
        int padding = 7;

        BufferedImage bgImage = new BufferedImage(width+padding*2, height, BufferedImage.TYPE_INT_ARGB);

        Graphics2D drawer = bgImage.createGraphics() ;
        drawer.setBackground(Color.white);
        drawer.clearRect(0,0,(int)width+padding*2,(int)height);
        drawer.setColor(Color.black);
        drawer.setFont(font);
        drawer.drawString("Welcome, my friend.", padding, height-padding);

        ImageIO.write(bgImage, "png", new File("c:/welcome.png"));

    } catch (IOException e) {
            System.out.println(e.getMessage());
    }

该代码有问题吗?就像不好的做法一样......