簡體   English   中英

將從 url 獲取的圖像轉換為輸入流。 然后讀取該輸入流以將其轉換為圖像並顯示在我的 jsp 上

[英]Convert image obtained from url into inputstream. Then read that inputstream to convert it into image & display on my jsp

package imageByte;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;

public class ImageByte {

    // private static final Logger LOG = Logger.getLogger(ImageByte.class);

    public static void main(String args[]) throws MalformedURLException, IOException {

        getImageAndTypeFromInputStream();

    }

    public static byte[] getImageAndTypeFromInputStream() throws MalformedURLException, IOException {

        String format = null;
        BufferedImage bufferedimage = null;
        InputStream input = null;

        URLConnection openConnection = new URL("http://www.thumbprintbooks.ca/wp-content/uploads/Vignettes-Photos-Spine-Inset-In-Plinth-thumbnail-c-Thumbprint-Books.jpg").openConnection();
        openConnection.addRequestProperty("User-Agent",
                "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36");

        input = openConnection.getInputStream();
        System.out.println("input : " + input.toString());
        System.out.println("input : " + input.getClass());
        System.out.println("input : " + input.available());


        ImageInputStream iis = ImageIO.createImageInputStream(input);
        System.out.println("iis : " + iis.toString());
        System.out.println("iis : " + iis.getClass());
        System.out.println("iis : " + iis.readBoolean());
        System.out.println("iis : " + iis.length());

        Iterator<ImageReader> readers = ImageIO.getImageReaders(iis);
        System.out.println("readers : " + readers.toString());
        System.out.println("readers : " + readers.getClass());

        if (readers.hasNext()) {

            System.out.println("if block");
            ImageReader reader = readers.next();
            format = reader.getFormatName();
            reader.setInput(iis);
            bufferedimage = reader.read(0);

            new BufferedImageWrapper(format, bufferedimage);

            final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            ImageIO.write(bufferedimage, "jpg", byteArrayOutputStream);
            return byteArrayOutputStream.toByteArray();
        } else {
            System.out.println("else block");
            String text = "OOPS !!!";
            byte convertEntry[] = text.getBytes();
            return convertEntry;
        }

    }

    public static class BufferedImageWrapper {

        private final String imageType;
        private final BufferedImage bufferedimage;

        public BufferedImageWrapper(String imageType, BufferedImage bufferedimage) {
            System.out.println("in Buffered image Wrapper");
            this.imageType = imageType;
            this.bufferedimage = bufferedimage;
        }

        public String getImageType() {

            return imageType;
        }

        public BufferedImage getBufferedimage() {

            return bufferedimage;
        }

    }
}

輸出 :

輸入:sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@3e3abc88

輸入:類 sun.net.www.protocol.http.HttpURLConnection$HttpInputStream

輸入:14195

iis:javax.imageio.stream.FileCacheImageInputStream@300ffa5d

iis:類 javax.imageio.stream.FileCacheImageInputStream

iis : 真的

iis:-1

讀者:javax.imageio.ImageIO$ImageReaderIterator@433c675d

讀者:類 javax.imageio.ImageIO$ImageReaderIterator

其他塊

希望這能解決您的問題。

package com.intellectdesign.cash.gdm.common;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;

public class ImageByte {


    public static void main(String args[]) throws MalformedURLException, IOException {

        getImageAndTypeFromInputStream();

    }

    public static byte[] getImageAndTypeFromInputStream() throws MalformedURLException, IOException {

        String format = null;
        BufferedImage bufferedimage = null;
        InputStream input = null;

        URLConnection openConnection = new URL("http://www.thumbprintbooks.ca/wp-content/uploads/Vignettes-Photos-Spine-Inset-In-Plinth-thumbnail-c-Thumbprint-Books.jpg").openConnection();
        openConnection.addRequestProperty("User-Agent",
                "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36");

        input = openConnection.getInputStream();
        System.out.println("input : " + input.toString());
        System.out.println("input : " + input.getClass());
        System.out.println("input : " + input.available());

        BufferedInputStream in=new BufferedInputStream(input);

        ImageInputStream stream=ImageIO.createImageInputStream(in);

        Iterator readers=ImageIO.getImageReaders(stream);

        if (readers.hasNext()) {

            System.out.println("if block");
            ImageReader reader = (ImageReader) readers.next();
            format = reader.getFormatName();
            reader.setInput(stream);
            bufferedimage = reader.read(0);

            new BufferedImageWrapper(format, bufferedimage);

            final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            ImageIO.write(bufferedimage, "jpg", byteArrayOutputStream);
            return byteArrayOutputStream.toByteArray();
        } else {
            System.out.println("else block");
            String text = "OOPS !!!";
            byte convertEntry[] = text.getBytes();
            return convertEntry;
        }

    }

    public static class BufferedImageWrapper {

        private final String imageType;
        private final BufferedImage bufferedimage;

        public BufferedImageWrapper(String imageType, BufferedImage bufferedimage) {
            System.out.println("in Buffered image Wrapper");
            this.imageType = imageType;
            this.bufferedimage = bufferedimage;
        }

        public String getImageType() {

            return imageType;
        }

        public BufferedImage getBufferedimage() {

            return bufferedimage;
        }

    }
}

暫無
暫無

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

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