簡體   English   中英

Java:如何將圖像轉換為字節[]

[英]Java: How To Convert Image to Byte[]

我在數據庫中使用bytearray格式的圖像。 我想在瀏覽器上顯示。 我不知道如何使用OutputStream編寫Image。 這是我的代碼。

   byte[] imageInBytes = (byte[]) obj; // from Database
    InputStream in = new ByteArrayInputStream(imageInBytes);
    Image img = ImageIO.read(in).getScaledInstance(50, -1, Image.SCALE_SMOOTH);


    OutputStream o = resp.getOutputStream();    // HttpServletResponse
    o.write(imgByte);

你可以嘗試這樣的事情:

File f=new File("image.jpg");
BufferedImage o=ImageIO.read(f);
ByteArrayOutputStream b=new ByteArrayOutputStream();
ImageIO.write(o, "jpg", b);
byte[] img=b.toByteArray();

您必須將響應的內容類型設置為要發送的圖像類型。 假設您的圖像是jpeg時存儲的。 然后,

OutputStream o = resp.getOutputStream();    // HttpServletResponse
o.setContentType("image/jpeg");
o.write(img.getBytes() /* imgByte */);

會向瀏覽器發送圖像。 (瀏覽器從標題信息中了解到您剛剛發送的以下信息是jpeg圖像。)

您可以嘗試使用ImageIO.write ...

ImageIO.write(img, "jpg", o);

但這需要你在閱讀時使用BufferedImage ...

BufferedImage img = ImageIO.read(in);

然后,您可以使用AffineTransform縮放圖像...

BufferedImage scaled = new BufferedImage(img.getWidth() / 2, img.getHeight() / 2, img.getType());
Graphics2D g2d = scaled.createGraphics();
g2d.setTransform(AffineTransform.getScaledInstance(0.5, 0.5));
g2d.drawImage(img, 0, 0, null);
g2d.dispose();

img = scaled;

顯然,這只會將圖像縮放50%,因此您需要根據圖像的原始大小和所需大小計算所需的縮放系數...

看一下Java:維護JPanel背景圖像的縱橫比,以獲得有關縮放圖像的一些想法......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM