精华内容
下载资源
问答
  • Java读取网址URL中的图片并显示,这是个很简单的例子,从网络取得图象,通过Java解析URL,过滤出图片地址,并读取远程URL中的图片内容,显示在JAVA的窗口中。本例主要是通过Toolkit对象,用于获取图像。编写时,我们...
  • java读取图片并显示

    万次阅读 2018-04-12 23:14:23
    一般我们会遇到一个网页会根据不同的状态来动态加载图片展示,比如首页轮播图,展示最新三张。 1、先去数据库查找最新发布的三张照片的ID。...3、后台通过ID获取图片路径,将该图片使用流读取到缓存区中,然后...

    一般我们会遇到一个网页会根据不同的状态来动态加载图片展示,比如首页轮播图,展示最新三张。

    1、先去数据库查找最新发布的三张照片的ID。

    2、根据图片ID去请求接口,直接写在src里面。

     <img src="http://localhost:8080/getIcon/1" class="slide-image">

    3、后台通过ID获取图片路径,将该图片使用流读取到缓存区中,然后写入到response中。

    展开全文
  • Java根据URL读取图像并显示,给出一个图片的URL地址,本代码会显示出该图片。  JTextField jtfUrl; //输入图像地址url  JButton jbGetImage; //取图像按钮  Image image; //获取的图像  Toolkit toolKit; //...
  • java读取本地图片并在网页显示

    万次阅读 多人点赞 2015-07-26 00:32:46
    做web开发时很多时候需要在网页上显示一张图片,有些图片是在项目工程中,可以通过项目地址链接引用,但有时候我们也需要使用存放在本地磁盘或者服务器上的图片,这时候我们就需要用java读取图片在网页展示了...

    做web开发时很多时候需要在网页上显示一张图片,有些图片是在项目工程中,可以通过项目地址链接引用,但有时候我们也需要使用存放在本地磁盘或者服务器上的图片,这时候我们就需要用java去读取图片,并在网页展示了。

    一、在项目中的action层读取图片流,并输出到客户响应流中


    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class ImageAction extends HttpServlet {
    	private static final long serialVersionUID = -1L;
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		this.doPost(request, response);
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		//读取本地图片输入流
    		FileInputStream inputStream = new FileInputStream("D:/image/123.jpg");
    		int i = inputStream.available();
    		//byte数组用于存放图片字节数据
    		byte[] buff = new byte[i];
    		inputStream.read(buff);
    		//记得关闭输入流
    		inputStream.close();
    		//设置发送到客户端的响应内容类型
    		response.setContentType("image/*");
    		OutputStream out = response.getOutputStream();
    		out.write(buff);
    		//关闭响应输出流
    		out.close();
    	}
    }


    二、在web.xml中加入该servlet (我这里演示暂时用的servlet方式,如果用框架则直接忽略该操作)

    <servlet>
    	<servlet-name>imageUrl</servlet-name>
    	<servlet-class>com.action.ImageAction</servlet-class>
    </servlet>
    
    <servlet-mapping>
    	<servlet-name>imageUrl</servlet-name>
    	<url-pattern>/imgurl</url-pattern>
    </servlet-mapping>


    三、在网页中引用该图片地址  http://localhost:8080/Demo/imgurl 

    <img src="http://localhost:8080/Demo/imgurl" alt="" />


    这样就可以在网页中引用存放在其他磁盘上的图片了。



























    展开全文
  • java Swing读取图片

    2008-11-28 20:07:54
    java Swing读取图片以友好的方式呈现个使用者
  • Java开发Opencv之(二)读取显示图片

    万次阅读 2017-09-27 15:54:45
    上一篇介绍了Java版本的OpenCV环境配置以及第一个示例程序,在第一个示例程序中,只是使用了控制台输出的方式,打印图像mat对象的一些信息,没有使用GUI形式展示出来。而且程序的结构以及运行方式等也没有做详细的...

    上一篇介绍了Java版本的OpenCV环境配置以及第一个示例程序,在第一个示例程序中,只是使用了控制台输出的方式,打印图像mat对象的一些信息,没有使用GUI形式展示出来。而且程序的结构以及运行方式等也没有做详细的介绍。这篇文章就这些问题展开详细的说明,为了有直观的认识,先把这篇文章要实现的效果展现出来,如下图,换了一张大图来展示。

      具体调用的方法如下就两行,new一个对象然后调用imshow()方法:

     public static void main(String[] args) {
    
            Mat mat = Imgcodecs.imread("E:/test.png");
            ImageViewer imageViewer = new ImageViewer(mat, "第一幅图片");
            imageViewer.imshow();
    
        }

      以下是显示该图像的代码,是不是很简单。过程就是将OpenCV中的mat对象中的像素数据转成Java中的Image对象,然后使用Java的界面方法新建一个GUI,将这个Image对象显示出来。

    package com.zmx.opencvtest;
    
    import org.opencv.core.Mat;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.awt.image.DataBufferByte;
    
    
    public class ImageViewer {
    
        private JLabel imageView;
        private Mat image;
        private String windowName;
    
        /**
         * 如果使用junit测试时调用该方法,图像会一闪而过,可通过sleep()等方式暂时显示
         * @param
         */
        public ImageViewer(Mat image) {
            this.image = image;
        }
    
    
        /**
         * @param image      要显示的mat
         * @param windowName 窗口标题
         */
        public ImageViewer(Mat image, String windowName) {
            this.image = image;
            this.windowName = windowName;
        }
    
        /**
         * 图片显示
         */
        public void imshow() {
            setSystemLookAndFeel();
            Image loadedImage = toBufferedImage(image);
            JFrame frame = createJFrame(windowName, image.width(), image.height());
            imageView.setIcon(new ImageIcon(loadedImage));
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 用户点击窗口关闭
        }
    
        private void setSystemLookAndFeel() {
            try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (UnsupportedLookAndFeelException e) {
                e.printStackTrace();
            }
        }
    
        private JFrame createJFrame(String windowName, int width, int height) {
            JFrame frame = new JFrame(windowName);
            imageView = new JLabel();
            final JScrollPane imageScrollPane = new JScrollPane(imageView);
            imageScrollPane.setPreferredSize(new Dimension(width, height));
            frame.add(imageScrollPane, BorderLayout.CENTER);
            frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            return frame;
        }
    
    
        private Image toBufferedImage(Mat matrix) {
            int type = BufferedImage.TYPE_BYTE_GRAY;
            if (matrix.channels() > 1) {
                type = BufferedImage.TYPE_3BYTE_BGR;
            }
            int bufferSize = matrix.channels() * matrix.cols() * matrix.rows();
            byte[] buffer = new byte[bufferSize];
            matrix.get(0, 0, buffer); // 获取所有的像素点
            BufferedImage image = new BufferedImage(matrix.cols(), matrix.rows(), type);
            final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
            System.arraycopy(buffer, 0, targetPixels, 0, buffer.length);
            return image;
        }
    }


      我们再回过头看看整个项目,就目前来说还没用到OpenCV的任何算法,只是用了mat对象作为图像的缓存中转显示,用纯Java方法调用也能达到一样的效果。但是实现的过程却是不同的。我们看读取图像的方法:

     Mat mat = Imgcodecs.imread("E:/test.png");

      只有一行代码,就将图像读取为Mat对象了,再来看imread()的内部实现代码:

     1 public class Imgcodecs {
     2 ......
     3     public static Mat imread(String filename)
     4     {
     5         
     6         Mat retVal = new Mat(imread_1(filename));
     7         
     8         return retVal;
     9     }
    10 
    11 ......
    12     private static native long imread_1(String filename);
    13 ......
    14 }
    15 
    16 ......
    17 
    18 public class Mat {
    19 
    20     public final long nativeObj;
    21 
    22     public Mat(long addr)
    23     {
    24         if (addr == 0)
    25             throw new java.lang.UnsupportedOperationException("Native object address is NULL");
    26         nativeObj = addr;
    27     }
    28 ......
    29 }

      在Imgcodes类中调用了imread()方法,再看该方法内部,new了一个Mat对象,使用了imread_1()方法,却返回的是long给Mat。继续跟踪mat()的构造方法,将long型的addr传给了nativeObj。这么看来这个Mat对象貌似就是个long型的地址似的,实则不然,其实在这里有个最重要的方法,那就是private static native long imread_1(String filename); 乍看这个方法跟其他的方法并没有什么不同,但是却不能继续往下跟踪了,无法查看其具体的实现。但跟普通的java方法,多了native这个关键字,那这个关键字又是做什么用的呢?

      简单来说这个方法就是连通Java代码和C++代码的桥梁,但却是单向的,只能从Java端调用C++程序,当然是编译后的可执行文件。以上面的代码为例,OpenCV官方用C++代码实现了一个imread_1()的方法,参数是文件名(包含路径),返回值是这个mat对象在内存中的地址,这个方法编译生成.dll文件,所以在程序运行之前需要指定.dll文件的位置(VM选项指定的-Djava.library.path=     PROJECTDIR\opencv\x64)和动态链接库的文件名(System.loadLibrary(Core.NATIVE_LIBRARY_NAME);)。这就是JNI(Java Native Interface),更多关于JNI的知识可详细参考其他资料,这里只是简单介绍Java版本的OpenCV程序的调用过程。

      到这里大家已经应该明白了,所有的Java版本的OpenCV算法部分的代码都是采用C++写的,然后通过Java的JNI方式来调用的,所以理论上Java版本的程序并不会慢多少。

      最后介绍一下easy_opencv的项目结构:

       如上图所示:

    • .idea/目录以及easy_opencv.iml是idea项目的配置信息,用户无需关注都是自动生成的,而且在git上我已经屏蔽了这两个本地文件(目录),所以你的电脑上可能跟我的不一致。
    • opencv/ 目录下是opencv的动态链接库程序以及jar包。
    • src/是我们保存代码的主要目录。java/路径下就是具体的代码。
    • resources/ 顾名思义就是资源文件的目录,以后所有程序需要用的图片等资源都将放到该目录下。
    • test/是测试目录
    • pom.xml就是maven工程的配置文件,一些包的依赖等需要在这里配置。

      如果对这些有疑问的话,可以上网搜索一下java maven工程,其采用了约定大于配置的方式,方便了应用程序的管理和开发。





    展开全文
  • 实现用HTTP连接获取一张图片,在servlet中转为流之后输出,这样访问一个service之后就能直接得到图片并显示出来 类似于访问一个图片的src(html)中会向一个http://localhost:8080/webproj/i.jpg发送请求,于是...

    可以有2种方式,1:目录映射,2:读取流


    方式1:

    需要在conf目录下对server.xml做修改,就是在<host></host>标签之间加入
    <Context path="images" docBase="D:\pictureFiles" debug="0"/>  //映射D盘pictrueFiles文件夹到项目路径
    然后在web页面访问文件夹下图片如下:
    <img src="/images/1.jpg" />

     

    方式2: 

    实现用HTTP连接获取一张图片,在servlet中转为流之后输出,这样访问一个service之后就能直接得到图片流并显示出来

    类似于访问一个图片的src(html)中会向一个http://localhost:8080/webproj/i.jpg发送请求,于是浏览器就会显示这张图片出来,现在要实现一个后台的service,做的是同样的事情但是请求的却是service,而这个service就返回了图片流回来


    	/**
    	 * 获取图片
    	 * @param request
    	 * @param response
    	 */
    	public void GetImage(HttpServletRequest request  
    			, HttpServletResponse response){
    		try {  
                URL url = new URL("http://csdnimg.cn/www/images/csdnindex_logo.gif");  
                HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
                conn.setRequestMethod("GET");  
                conn.setConnectTimeout(5 * 1000);  
                InputStream inStream = conn.getInputStream();//通过输入流获取图片数据  
    	        byte data[] = readInputStream(inStream);
    	        inStream.read(data);  //读数据   
    	        inStream.close();   
    	        response.setContentType("image/jpg"); //设置返回的文件类型   
    	        OutputStream os = response.getOutputStream();  
    	        os.write(data);  
    	        os.flush();  
    	        os.close(); 
            } catch (Exception e) {  
                e.printStackTrace();  
            } 
    	}
    	
    	
    	 public static byte[] readInputStream(InputStream inStream) throws Exception{  
    	        ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
    	        byte[] buffer = new byte[2048];  
    	        int len = 0;  
    	        while( (len=inStream.read(buffer)) != -1 ){  
    	            outStream.write(buffer, 0, len);  
    	        }  
    	        inStream.close();  
    	        return outStream.toByteArray();  
    	 }  
    	 
    	 
    	
    	
    	/**
    	 * 上传首页图片
    	 * @param request
    	 * @param response
    	 */
    	public void UploadHomeImage(HttpServletRequest request  
    			, HttpServletResponse response){
    		//存储文件,同时获取表单中的输入值对
    		Map<String, String> nameValuePair = new HashMap<String, String>();
    		
    		//户型图片存储对象
    		HomeImage homeImage = new HomeImage();
    		
    		//获取存储的地址,同时捕获参数值对
    		String imageUrl = saveUploadFile(request,  "/Upload/HomeImage/", nameValuePair);
    		
            homeImage.setImageUrl(imageUrl);
    		homeImage.setUploadDate(new Date());
    		
    		settingService.saveOrUpdateHomeImage(homeImage);
    		
    		//获取信息界面显示类
    		HomeImagePage responsePage = settingService.getWebHomePage();
    		
    		//将页面显示数据类转化为JSON,返回前端
    		responseOutWithJson(response, responsePage);
    		response.setStatus(HttpServletResponse.SC_OK);
    	}


    可用于读取web工程目录之外的图片并显示

    采用nutz框架实现的:

    	@At("/getSrcImg")
    	public void getSrcImg(HttpServletRequest request, HttpServletResponse response,String fileName){
    		System.out.println("getSrcImg, fileName="+fileName);
    		try {	       	
    			String tPath  = "E:\\img\\" + fileName;
    			byte data[] = FileUtils.getFileContent(tPath);   
    			response.setContentType("image/jpg"); //设置返回的文件类型     
    			OutputStream os = response.getOutputStream();    
    			os.write(data);    
    			os.flush();
    			os.close();
    		} catch (Exception e) {    
    			e.printStackTrace();    
    		}   
    
    		System.out.println("test");
    	}

    	/**
    	 * 获取文件内容
    	 * @param filePath
    	 * @return
    	 * @throws IOException
    	 */
    	public static byte[] getFileContent(String filePath) throws IOException {  
    		File file = new File(filePath);  
    		long fileSize = file.length();  
    		if (fileSize > Integer.MAX_VALUE) {  
    			System.out.println("file too big...");  
    			return null;  
    		}  
    		FileInputStream fi = new FileInputStream(file);  
    		byte[] buffer = new byte[(int) fileSize];  
    		int offset = 0;  
    		int numRead = 0;  
    		while (offset < buffer.length  
    				&& (numRead = fi.read(buffer, offset, buffer.length - offset)) >= 0) {  
    			offset += numRead;  
    		}  
    		// 确保所有数据均被读取  
    		if (offset != buffer.length) {  
    			throw new IOException("Could not completely read file "  
    					+ file.getName());  
    		}  
    		fi.close();  
    		return buffer;  
    	}  
    

    据说这种方式比较耗内存,如果图像很大,比如10多M的话,改成流式会好点


    试试:


    展开全文
  • java IO流读取图片供前台显示

    千次阅读 2019-02-28 17:57:48
    最近项目中需要用到IO流来读取图片以提供前台页面展示,由于以前一直是...嘿感觉挺简单的,由于是第一次采用IO流的方式进行读取图片供页面显示,所以把以下代码记录一下 后台代码: /** * IO流读取图片 by:long...
  • java读取图片的几种方法

    千次阅读 2018-02-09 22:20:20
    1. MyCellRenderer.class.getClassLoader().getResource("...是图片的相对路径,该图片放在src目录下。 2.ImageIO.read(newFile("image/login.gif")); 其中"image/login.gi...
  • Java读取图片中的地理坐标(一)

    千次阅读 2017-09-14 10:02:15
    版权声明:本文为博主原创文章,未经博主允许不得...读取图片中的GPS坐标在地图上显示 条件 只有符合EXIF标准的图片中才存有GPS坐标 工具 Metadata Extractor开源库  下载地址:https://github.com/
  • 使用Java的ImageIO做一些图片处理的工作,突然今天有人反馈说我的程序无法处理jpg图片。我拿到图片进行调试,出现了如下报错: javax.imageio.IIOException: Unsupported Image Type at ...
  • 图片显示操作 JLabel显示图片: JLabel labImg = new JLabel(); Image fileImg = new ImageIcon("F:\\AI酒店\\SDK的test图片\\facin.jpg").getImage(); Image titleImg = ImageTools.imageScale(fileImg, 0....
  • *param qrcodePath : 最后图片保存路劲 */ public static void overlapImage(String qrcodePath) { try { BufferedImage big = new BufferedImage(1080, 1920, BufferedImage.TYPE_INT_RGB); ...
  • 上一篇介绍了Java版本的OpenCV环境配置以及第一个示例程序,在第一个示例程序中,只是使用了控制台输出的方式,打印图像mat对象的一些信息,没有使用GUI形式展示出来。而且程序的结构以及运行方式等也没有做详细的...
  • 使用java.net读取网络文件 import java.io.BufferedInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; ...
  • Java Web中上传图片以及显示图片的方法,用文字和图片相结合的方式清晰地讲解了
  • 业务场景:读取excel数据,该excel中每行都会有图片,各个图片可以重复,现在需要拿到每行对应的图片。 测试用excel,如图可见有两个一样的图片,但是其实是复制的两个不同文件: poi获取图片我所知道的只有一个方法,...
  • java 读取图片字节码This article uses examples from the Java source code in (BytecodeDemo.java) and its decompiled bytecode in (BytecodeDemo-decompiled.txt). In my previous article, I wrot...
  • JAVA Swing 之前就想做这个,但是当初不知道如何做,而且百度了一堆发现没有实现的方法, 现在看了看,准备百度的,但是没有度出来,于是自己做了, 界面有的是多余的,因为做这个是为了其他的项目,所以当时设计的时候...
  • Java网络下载程序,从网上下载数据的例子,本例子展示的是下载一幅图像的数据,从创建网络对象到最后成功下载,具体编写了以下代码:  while ((ch = in.read()) != -1){ //读取字节数   bos.write(ch); //写字节...
  • 在工程的 /drawable文件夹下黏贴一张图片(上面的图片) 1.1 使用 imageView.setImageResource( id ) 来读取资源文件中的图片 imageView.setImageResource(R.drawable.khy); 2.保存图片 Context类...
  • Java通过连接显示图片

    2019-06-05 11:39:33
    首先我们要拿到从数据库查询到的图片路径: public User selectByid(int id) { User user = null; con = DBUtil.getConnection(); try {String str = "where BooksID = ?"; ps = con.prepareStatement...
  • 2、读取并展示一张图片 import org . opencv . core . Core ; import org . opencv . core . Mat ; import org . opencv . highgui . HighGui ; import org . opencv . imgcodecs . Imgcodecs ; ...
  • <%@ page contentType="text/... charset=gbk" %> <%@ page import="java.io.*"%> <%@ page import="java.sql.*, javax.sql.*" %> <%@ page import="java.util.*"%> <%@ page impo...
  • Android 读取sd卡图片并显示

    千次阅读 2015-08-06 00:05:15
    package com.sdcard_read_all; import java.io.File; import java.util.ArrayList; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Messag
  • 支持将DDS图像数据转换为BufferedImage,以便在GUI程序中...可以简单地认为这些dds文件同bmp、tga等常见的图片格式一样,记录了一张图片的信息,如果我们在photoshop中使用dds的插件,就可以在photoshop中打开这些文件。
  • 这里有个需求,我们需要在页面上显示一张本地的图片。看似简单的需求,却不简单。 也许你百度一下会看到如下的答案: 比如说这里https://jingyan.baidu.com/article/ca41422f3252571eae99eda2.html 但是可能...
  • 利用ImageIO读取图片文件, 再利用BufferedImage的getSubimage取到X,Y轴和需要取出来的图片的宽高。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,904
精华内容 7,961
关键字:

java读取并显示一张图片

java 订阅