精华内容
下载资源
问答
  • 上一篇介绍了Java版本的OpenCV环境配置以及第一个示例程序,在第一个示例程序中,只是使用了控制台输出的方式,打印图像mat对象的一些信息,没有使用GUI形式展示出来。而且程序的结构以及运行方式等也没有做详细的...

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

    2eb8e19bcd4e91cde06dc66cc88b960f.png

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

    1 ImageViewer imageViewer = new ImageViewer(mat, "第一幅图片");2 imageViewer.imshow();

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

    1 packagecom.superbool.util;2

    3 importorg.opencv.core.Mat;4

    5 import javax.swing.*;6 import java.awt.*;7 importjava.awt.image.BufferedImage;8 importjava.awt.image.DataBufferByte;9

    10 /**

    11 * Created by kofee on 2016/3/28.12 */

    13 public classImageViewer {14 privateJLabel imageView;15

    16 privateMat image;17 privateString windowName;18

    19 /**

    20 * 如果使用junit测试时调用该方法,图像会一闪而过,可通过sleep()等方式暂时显示21 *22 *@param

    23 */

    24

    25 publicImageViewer(Mat image) {26 this.image =image;27 }28

    29

    30 /**

    31 *@paramimage 要显示的mat32 *@paramwindowName 窗口标题33 */

    34 publicImageViewer(Mat image, String windowName) {35 this.image =image;36 this.windowName =windowName;37 }38

    39 /**

    40 * 图片显示41 */

    42 public voidimshow() {43 setSystemLookAndFeel();44 Image loadedImage =toBufferedImage(image);45 JFrame frame =createJFrame(windowName, image.width(), image.height());46 imageView.setIcon(newImageIcon(loadedImage));47 frame.pack();48 frame.setLocationRelativeTo(null);49 frame.setVisible(true);50 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用户点击窗口关闭

    51 }52

    53 private voidsetSystemLookAndFeel() {54 try{55 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());56 } catch(ClassNotFoundException e) {57 e.printStackTrace();58 } catch(InstantiationException e) {59 e.printStackTrace();60 } catch(IllegalAccessException e) {61 e.printStackTrace();62 } catch(UnsupportedLookAndFeelException e) {63 e.printStackTrace();64 }65 }66

    67 private JFrame createJFrame(String windowName, int width, intheight) {68 JFrame frame = newJFrame(windowName);69 imageView = newJLabel();70 final JScrollPane imageScrollPane = newJScrollPane(imageView);71 imageScrollPane.setPreferredSize(newDimension(width, height));72 frame.add(imageScrollPane, BorderLayout.CENTER);73 frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);74 returnframe;75 }76

    77

    78 privateImage toBufferedImage(Mat matrix) {79 int type =BufferedImage.TYPE_BYTE_GRAY;80 if (matrix.channels() > 1) {81 type =BufferedImage.TYPE_3BYTE_BGR;82 }83 int bufferSize = matrix.channels() * matrix.cols() *matrix.rows();84 byte[] buffer = new byte[bufferSize];85 matrix.get(0, 0, buffer); //获取所有的像素点

    86 BufferedImage image = newBufferedImage(matrix.cols(), matrix.rows(), type);87 final byte[] targetPixels =((DataBufferByte) image.getRaster().getDataBuffer()).getData();88 System.arraycopy(buffer, 0, targetPixels, 0, buffer.length);89 returnimage;90 }91 }

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

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

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

    1 public classImgcodecs {2 ......3 public staticMat imread(String filename)4 {5

    6 Mat retVal = newMat(imread_1(filename));7

    8 returnretVal;9 }10

    11 ......12 private static native longimread_1(String filename);13 ......14 }15

    16 ......17

    18 public classMat {19

    20 public final longnativeObj;21

    22 public Mat(longaddr)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=$PROJECT_DIR$\opencv\x64)和动态链接库的文件名(System.loadLibrary(Core.NATIVE_LIBRARY_NAME);)。这就是JNI(Java Native Interface),更多关于JNI的知识可详细参考其他资料,这里只是简单介绍Java版本的OpenCV程序的调用过程。

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

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

    f71e9923921d0db980c3ed21b5fb4d61.png

    如上图所示:

    .idea/目录以及easy_opencv.iml是idea项目的配置信息,用户无需关注都是自动生成的,而且在git上我已经屏蔽了这两个本地文件(目录),所以你的电脑上可能跟我的不一致。

    opencv/ 目录下是opencv的动态链接库程序以及jar包。

    src/是我们保存代码的主要目录。java/路径下就是具体的代码。

    resources/ 顾名思义就是资源文件的目录,以后所有程序需要用的图片等资源都将放到该目录下。

    test/是测试目录

    pom.xml就是maven工程的配置文件,一些包的依赖等需要在这里配置。

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

    展开全文
  • java读取本地图片并在网页显示

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

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

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

    1. import java.io.FileInputStream;  
    2. import java.io.IOException;  
    3. import java.io.OutputStream;  
    4.   
    5. import javax.servlet.ServletException;  
    6. import javax.servlet.http.HttpServlet;  
    7. import javax.servlet.http.HttpServletRequest;  
    8. import javax.servlet.http.HttpServletResponse;  
    9.   
    10. public class ImageAction extends HttpServlet {  
    11.     private static final long serialVersionUID = -1L;  
    12.   
    13.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
    14.             throws ServletException, IOException {  
    15.         this.doPost(request, response);  
    16.     }  
    17.   
    18.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
    19.             throws ServletException, IOException {  
    20.         //读取本地图片输入流  
    21.         FileInputStream inputStream = new FileInputStream("D:/image/123.jpg");  
    22.         int i = inputStream.available();  
    23.         //byte数组用于存放图片字节数据  
    24.         byte[] buff = new byte[i];  
    25.         inputStream.read(buff);  
    26.         //记得关闭输入流  
    27.         inputStream.close();  
    28.         //设置发送到客户端的响应内容类型  
    29.         response.setContentType("image/*");  
    30.         OutputStream out = response.getOutputStream();  
    31.         out.write(buff);  
    32.         //关闭响应输出流  
    33.         out.close();  
    34.     }  

    1. }  

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

    [html] view plain copy
    1. <servlet>  
    2.     <servlet-name>imageUrl</servlet-name>  
    3.     <servlet-class>com.action.ImageAction</servlet-class>  
    4. </servlet>  
    5.   
    6. <servlet-mapping>  
    7.     <servlet-name>imageUrl</servlet-name>  
    8.     <url-pattern>/imgurl</url-pattern>  
    9. </servlet-mapping>  

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

    1. <img src="http://localhost:8080/Demo/imgurl" alt="" />  
    展开全文
  • 实现用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版本的OpenCV环境配置以及第一个示例程序,在第一个示例程序中,只是使用了控制台输出的方式,打印图像mat对象的一些信息,没有使用GUI形式展示出来。而且程序的结构以及运行方式等也没有做详细的...

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

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

    1     ImageViewer imageViewer = new ImageViewer(mat, "第一幅图片");
    2     imageViewer.imshow();    

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

     1 package com.superbool.util;
     2 
     3 import org.opencv.core.Mat;
     4 
     5 import javax.swing.*;
     6 import java.awt.*;
     7 import java.awt.image.BufferedImage;
     8 import java.awt.image.DataBufferByte;
     9 
    10 /**
    11  * Created by kofee on 2016/3/28.
    12  */
    13 public class ImageViewer {
    14     private JLabel imageView;
    15 
    16     private Mat image;
    17     private String windowName;
    18 
    19     /**
    20      * 如果使用junit测试时调用该方法,图像会一闪而过,可通过sleep()等方式暂时显示
    21      *
    22      * @param
    23      */
    24 
    25     public ImageViewer(Mat image) {
    26         this.image = image;
    27     }
    28 
    29 
    30     /**
    31      * @param image      要显示的mat
    32      * @param windowName 窗口标题
    33      */
    34     public ImageViewer(Mat image, String windowName) {
    35         this.image = image;
    36         this.windowName = windowName;
    37     }
    38 
    39     /**
    40      * 图片显示
    41      */
    42     public void imshow() {
    43         setSystemLookAndFeel();
    44         Image loadedImage = toBufferedImage(image);
    45         JFrame frame = createJFrame(windowName, image.width(), image.height());
    46         imageView.setIcon(new ImageIcon(loadedImage));
    47         frame.pack();
    48         frame.setLocationRelativeTo(null);
    49         frame.setVisible(true);
    50         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 用户点击窗口关闭
    51     }
    52 
    53     private void setSystemLookAndFeel() {
    54         try {
    55             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    56         } catch (ClassNotFoundException e) {
    57             e.printStackTrace();
    58         } catch (InstantiationException e) {
    59             e.printStackTrace();
    60         } catch (IllegalAccessException e) {
    61             e.printStackTrace();
    62         } catch (UnsupportedLookAndFeelException e) {
    63             e.printStackTrace();
    64         }
    65     }
    66 
    67     private JFrame createJFrame(String windowName, int width, int height) {
    68         JFrame frame = new JFrame(windowName);
    69         imageView = new JLabel();
    70         final JScrollPane imageScrollPane = new JScrollPane(imageView);
    71         imageScrollPane.setPreferredSize(new Dimension(width, height));
    72         frame.add(imageScrollPane, BorderLayout.CENTER);
    73         frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    74         return frame;
    75     }
    76 
    77 
    78     private Image toBufferedImage(Mat matrix) {
    79         int type = BufferedImage.TYPE_BYTE_GRAY;
    80         if (matrix.channels() > 1) {
    81             type = BufferedImage.TYPE_3BYTE_BGR;
    82         }
    83         int bufferSize = matrix.channels() * matrix.cols() * matrix.rows();
    84         byte[] buffer = new byte[bufferSize];
    85         matrix.get(0, 0, buffer); // 获取所有的像素点
    86         BufferedImage image = new BufferedImage(matrix.cols(), matrix.rows(), type);
    87         final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
    88         System.arraycopy(buffer, 0, targetPixels, 0, buffer.length);
    89         return image;
    90     }
    91 }

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

    1 Mat mat = Imgcodecs.imread("C:/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=$PROJECT_DIR$\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工程,其采用了约定大于配置的方式,方便了应用程序的管理和开发。

    转载于:https://www.cnblogs.com/superbool/p/5331196.html

    展开全文
  • 使用Servlet显示图片在本文的示例中,我们使用FileInputStream类读取图像,使用...1 准备需要显示的图片提前在D盘的upload目录中准备一张图片(注意:根据自身情况准备即可):2 编写index.jspind...
  • 序言这个是从抖音上学来的,一开始刷抖音,遇到不少字符串跳舞的视频,因此来实践一下主要分为三个部分静态图片转静态图片gif转gif视频转视频静态图片转静态图片其实原理很简单,读取图片的像素,新建一张大小一样的...
  • java范例开发大全

    2013-03-08 20:06:54
    实例224 资源搜索下载(线程等待和通报) 410 实例225 模拟淘宝购物买卖双方交易问题 412 实例226 携子之手 与子偕老(join) 415 实例227 线程让步(Yield) 417 实例228 会走动的钟(多线程) 419 实例229 变形...
  • Java做被抖音带火的“字符舞蹈”

    千次阅读 2018-11-25 21:33:06
    其实原理很简单,读取图片的像素,新建一张大小一样的图片,根据原图像素的灰度,决定是不是要显示出来,在新图相应的位置添加字符,这样就完成了 借助前辈写的工具,主要包含一下四个类: AnimatedGifEncoder.....
  • Java经典编程300例(code)

    千次下载 热门讨论 2013-01-09 10:26:53
    实例139 从数据库读取图片文件 200 实例140 窗体动态加载磁盘文件 201 实例141 删除文件夹中所有文件 202 实例142 创建磁盘索引文件 203 实例143 控制台记录器 205 实例144 防止创建多个字符串对象 206 实例145 合并...
  • java范例开发大全源代码

    热门讨论 2011-10-30 23:31:51
     实例171 一张考试成绩单 275  实例172 银行自动存取一体机 278  9.4 多态 284  实例173 饮食文化 284  实例174 使用构造方法的重载计算课程的GPA值 287  第10章 内部类与接口(教学视频:41分钟) ...
  • Java范例开发大全 (源程序)

    热门讨论 2011-04-27 07:47:22
    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4 ... 实例224 资源搜索下载(线程...
  • java范例开发大全(pdf&源码)

    热门讨论 2013-07-04 13:04:40
    实例224 资源搜索下载(线程等待和通报) 410 实例225 模拟淘宝购物买卖双方交易问题 412 实例226 携子之手 与子偕老(join) 415 实例227 线程让步(Yield) 417 实例228 会走动的钟(多线程) 419 实例229 变形...
  • Java范例开发大全(全书源程序)

    热门讨论 2013-04-05 11:50:26
    实例224 资源搜索下载(线程等待和通报) 410 实例225 模拟淘宝购物买卖双方交易问题 412 实例226 携子之手 与子偕老(join) 415 实例227 线程让步(Yield) 417 实例228 会走动的钟(多线程) 419 实例229...
  • 书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉,陈丹丹) PDF格式扫描版,全书分为24章,共817页。2011年1月出版。 全书压缩打包成4部分,这是第3部分 注:本系列图书的第I、II卷再版时均相应改名为...
  • 书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉,陈丹丹) PDF格式扫描版,全书分为24章,共817页。2011年1月出版。 全书压缩打包成4部分,这是第1部分 注:本系列图书的第I、II卷再版时均相应改名为...
  • 书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉,陈丹丹) PDF格式扫描版,全书分为24章,共817页。2011年1月出版。 全书压缩打包成4部分,这是第2部分 注:本系列图书的第I、II卷再版时均相应改名为...
  • 书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉,陈丹丹) PDF格式扫描版,全书分为24章,共817页。2011年1月出版。 全书压缩打包成4部分,这是第4部分 注:本系列图书的第I、II卷再版时均相应改名为...
  • 实例313 能显示图片的组合框 实例314 使用滑块来选择日期 13.5 菜单控件的应用 实例315 模仿记事本的菜单栏 实例316 自定义纵向的菜单栏 实例317 复选框与单选按钮菜单 实例318 包含图片的弹出菜单 实例319 ...
  • 实例313 能显示图片的组合框 实例314 使用滑块来选择日期 13.5 菜单控件的应用 实例315 模仿记事本的菜单栏 实例316 自定义纵向的菜单栏 实例317 复选框与单选按钮菜单 实例318 包含图片的弹出菜单 实例319 ...
  • 实例313 能显示图片的组合框 实例314 使用滑块来选择日期 13.5 菜单控件的应用 实例315 模仿记事本的菜单栏 实例316 自定义纵向的菜单栏 实例317 复选框与单选按钮菜单 实例318 包含图片的弹出菜单 实例319 ...
  • 实例313 能显示图片的组合框 实例314 使用滑块来选择日期 13.5 菜单控件的应用 实例315 模仿记事本的菜单栏 实例316 自定义纵向的菜单栏 实例317 复选框与单选按钮菜单 实例318 包含图片的弹出菜单 实例319 ...
  • 实例313 能显示图片的组合框 实例314 使用滑块来选择日期 13.5 菜单控件的应用 实例315 模仿记事本的菜单栏 实例316 自定义纵向的菜单栏 实例317 复选框与单选按钮菜单 实例318 包含图片的弹出菜单 实例319 ...
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    � Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的有限子集,尚不承诺遵守 Java 任何 Java 规范 , 可能会造 成J ava 阵营的进一步分裂。 � 现有应用完善度不太够,需要的开发工作量较大。--------------------...
  •  bootcfg /scan 扫描用于 Windows 安装的所有磁盘并显示结果。  注意:这些结果被静态存储,并用于本次会话。如果在本次会话期间磁盘配置发生变化,为获得更新的扫描,必须先重新启动计算机,然后再次扫描磁盘。...
  • 手机 pdf 阅读器

    2009-02-12 23:00:29
    系统路径下如果存在bg.png文件,则会作为欢迎界面的背景图片显示(右下角) 减少跳转及翻页中出现乱码的机率 提高阅读时绘图效率,滚屏效率同样提高 播放时,暂停会导致声音爆至最大的BUG 内置“忘记月亮”制作的两款...

空空如也

空空如也

1 2
收藏数 34
精华内容 13
关键字:

java读取并显示一张图片

java 订阅