[英]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.