簡體   English   中英

如何從InputStream創建圖像,調整其大小並保存它?

[英]How to create an image from an InputStream, resize it and save it?

我在獲得InputStream並創建圖像的地方有以下代碼:

Part file;
// more code
try {
        InputStream is = file.getInputStream();

        File f = new File("C:\\ImagenesAlmacen\\QR\\olaKeAse.jpg");

        OutputStream os = new FileOutputStream(f);
        byte[] buf = new byte[1024];
        int len;

        while ((len = is.read(buf)) > 0) {
            os.write(buf, 0, len);
        }

        os.close();
        is.close();

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

問題是,如果從InputStream創建,則必須在創建圖像之前調整該圖像的大小。

那么如何調整我從InputStream得到的大小,然后創建該調整大小的圖像。 我想將圖像的最大面設置為180px並用該比例調整另一面的大小。

例:

圖片= 289px * 206px調整大小后的圖片= 180px * 128px

我這樣做:

try {

        InputStream is = file.getInputStream();
        Image image = ImageIO.read(is);

        BufferedImage bi = this.createResizedCopy(image, 180, 180, true);
        ImageIO.write(bi, "jpg", new File("C:\\ImagenesAlmacen\\QR\\olaKeAse.jpg"));

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

BufferedImage createResizedCopy(Image originalImage, int scaledWidth, int scaledHeight, boolean preserveAlpha) {
    int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
    BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, imageType);
    Graphics2D g = scaledBI.createGraphics();
    if (preserveAlpha) {
        g.setComposite(AlphaComposite.Src);
    }
    g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null);
    g.dispose();
    return scaledBI;
}

而且我沒有使用其他代碼。

希望可以幫助某人!

暫無
暫無

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

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