图像文件的显示  
          Graphics类中确实提供了不少绘制图形的方法,但如果用它们在applet运行过程中实时地绘制一幅较复杂的图形(例如一条活泼可爱的小狗),就好比是在用斧头和木块去制造航天飞机。因此,对于复杂图形,大部分都事先用专用的绘图软件绘制好,或者是用其它截取图像的工具(如扫描仪、视效卡等)获取图像的数据信息,再将它们按一定的格式存入图像文件。applet运行时,只要找到图像文件存贮的位置,将它装载到内存里,然后在适当的时机将它显示在屏幕上就可以了。  
   
  1.   图像文件的装载  
          Java目前所支持的图像文件格式只有两种,它们分别是GIF和JPEG格式(带有.GIF、  
  .JPG、.JPEG后缀名的文件)。因此若是其它格式的图像文件,就先要将它们转换为这两  
  种格式。能转换图像格式的软件有很多,如PhotoStyler等。  
          Applet类中提供了getImage(   )方法用来将准备好的图像文件装载到applet中,但我  
  们必须首先指明图像文件所存贮的位置。由于Java语言是面向网络应用的,因此文件的存  
  贮位置并不局限于本地机器的磁盘目录,而大部分情况是直接存取网络中Web服务器上的  
  图像文件,因而,Java采用URL(Universal   Resource   Location,统一资源定位器)来定  
  位图像文件的网络位置。因此,Java专门提供了URL类来管理URL信息(关于该类的详细介  
  绍见下一章)。  
          表示一个URL信息可分为两种形式:  
          一种称为绝对URL形式,它指明了网络资源的全路径名。如:  
   
              绝对URL:“http://www.xyz.com/java/imgsample/images/m1.gif”  
   
          另一种称为相对URL形式,分别由基准URL(即base   URL)再加上相对于基准URL下的  
  相对URL这两部分组成,例如上面的例子可表示为:  
   
              基准URL:“http://www.xyz.com/java/imgsample/”  
              相对URL:“images/m1.gif”  
   
          现在,我们可以来看一下getImage(   )方法的调用格式了:  
   
              Image   getImage(URL   url)    
              Image   getImage(URL   url,   String   name)    
   
          我们可以发现,这两种调用格式的返回值都是Image对象。确实,Java特别提供了  
  java.awt.Image类来管理与图像文件有关的信息,因此执行与图像文件有关的操作时不要  
  忘了import这个类。getImage(   )方法的第一种调用格式只需一个URL对象作为参数,这便  
  是绝对URL。而后一种格式则带有两个参数,第一个参数给出的URL对象是基准URL,第二  
  个参数是字符串类型,它描述了相对于基准URL下的路径和文件名信息,因此这两个参数  
  的内容综合在一起就构成了一个绝对URL。例如,下面两种写法所返回的结果是一样的:  
   
              Image   img=getImage(new   URL("http://www.xyz.com/java/imgsample/images/m1.gif");  
              Image   img=getImage(new   URL("http://www.xyz.com/java/imgsample/"),"images/m1.gif");  
   
          表面看来,好象第一种调用格式较方便一些,但实际上第二种调用格式用得更普遍,  
  因为这种格式更具灵活性。原来,Applet类中提供了两个方法来帮助我们方便地获取基准  
  URL对象,它们的调用格式如下:  
   
              URL   getDocumentBase(   )    
              URL   getCodeBase(   )    
   
          其中getDocumentBase(   )方法返回的基准URL对象代表了包含该applet的HTML文件所  
  处的目录,例如该文件存贮在"http://www.xyz.com/java/imgsample/m1.html"中,则该  
  方法就返回"http://www.xyz.com/java/imgsample/"路径。而getCodeBase(   )方法返回的  
  基准URL对象代表了该applet文件(.class文件)所处的目录。它是根据HTML文件的"APPLET"  
  标记中的CODEBASE属性值计算出来的,若该属性没有设置,则同样返回该HTML文件所处的  
  目录。  
          好了,现在我们应该可以感受到基准URL的灵活性了吧。只要我们写下语句:  
   
              Image   img   =   getImage(getDocumentBase(   ),"images/m1.gif");  
   
          那么即使整个imgsample目录移到别处任何地方,也可以正确装载图像文件,而采用  
  对于绝对URL形式则需要重新修改applet代码并重新编译。  
   
  2.   图像文件的显示  
          getImage(   )方法仅仅是将图像文件从网络上装载进来,交由Image对象管理。那我们  
  怎样把得到的Image对象中的图像显示在屏幕上呢?这又要回到我们的老朋友Graphics类  
  中来了,因为Graphics类提供了一个drawImage(   )方法,它能完成将Image对象中的图像  
  显示在屏幕的特定位置上,就象显示文本一样方便。drawImage(   )方法的调用格式如下:  
              boolean   drawImage(Image   img,   int   x,   int   y,   ImageObserver   observer)  
          其中img参数就是要显示的Image对象。x和y参数是该图像左上角的坐标值。observer  
  参数则是一个ImageObserver接口(interface),它用来跟踪图像文件装载是否已经完成  
  的情况,通常我们都将该参数置为this,即传递本对象的引用去实现这个接口。  
          除了将图像文件照原样输出以外,drawImage(   )方法的另外一种调用格式还能指定图  
  像显示的区域大小:  
   
              boolean   drawImage(Image   img,   int   x,   int   y,   int   width,   int   height,   ImageObserver   observer)    
   
          这种格式比第一种格式多了两个参数width和height,即表示图像显示的宽度和高度  
  。若实际图像的宽度和高度与这两个参数值不一样时,Java系统会自动将它进行缩放,以  
  适合我们所定的矩形区域。  
          有时,我们为了不使图像因缩放而变形失真,可以将原图的宽和高均按相同的比例进  
  行缩小或放大。那么怎样知道原图的大小呢?只需调用Image类中的两个方法就可以分别  
  得到原图的宽度和高度。它们的调用格式如下:  
   
              int   getWidth(ImageObserver   observer)  
              int   getHeight(ImageObserver   observer)  
   
          同drawImage(   )方法一样,我们通常用this作为observer的参数值。  
          下面的程序段给出了一个显示图像文件的例子,其显示结果如图4-14所示。  
   
  import   java.awt.Graphics;  
  import   java.awt.Image;  
  public   class   Images   extends   java.applet.Applet{  
          Image   img;  
  public   void   init(){  
  img=getImage(getCodeBase(),"man.gif");  
  }  
  public   void   paint(Graphics   g){  
  int   w=img.getWidth(this);  
  int   h=img.getHeight(this);  
  g.drawImage(img,20,10,this); //原图  
  g.drawImage(img,200,10,w/2,h/2,this); //缩小一半  
  g.drawImage(img,20,200,w*2,h/3,this); //宽扁图  
  g.drawImage(img,350,10,w/2,h*2,this); //瘦高图  
  }  
  }

用APPLET显示图片相关推荐

  1. java 空白图片_java applet 显示图片 一片空白 ??

    代码:importjava.applet.Applet;importjava.awt.Graphics;importjava.awt.Image;importjava.awt.event.MouseE ...

  2. Eclipse运行Applet没有显示图片,getCodeBase,getDocumentBase

    解决Eclipse运行Applet没有显示图片      创建一个简单的Java Applet项目用于显示图片,代码如下:[下载]:http://download.csdn.net/detail/gu ...

  3. java显示图片_java显示图片的方法

    java显示图片的方法 applet能显示GIF,JPEG,BMP等其他格式的图片.为了在applet中显示图片,你需要使用java.awt.Graphics类的drawImage()方法.以下是小编 ...

  4. 在DataGrid中显示图片

    兼谈 DadaGrid 模板列的创建 DadaGrid 是 ASP.NET 编程中一个很重要的控件,其优良的可定制功能为提高它的表现力提供了极大的方便.除了与数据源直接绑定以外,我们还可以通过列绑定模 ...

  5. python运行完不能显示图_【已解决】Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片...

    [问题] 在windows的cmd命令行下,使用Python的PIL库打开并显示一个jpg图片:openedImg = Image.open(saveToFile); print "open ...

  6. python opencv 拼接 连接 显示 图片

    python opencv 拼接 显示 图片 代码 import cv2 import numpy as np # 读取图片 img1 = cv2.imread('1.jpg',1) # 读取图片 i ...

  7. Flask显示图片并设置图片的缓存时间

    1.显示图片 想要Flask在网页中显示图片,需要使用template 模板,例如 index.py from flask import Flask, render_template, url_for ...

  8. Github无法加载或不显示图片问题

    好久以前就发现Github无法加载或不显示图片,最近又严重影响日常使用.查找资料并总结解决步骤如下: 1.Mac终端输入 sudo vi /etc/hosts windows 修改文件WIN(C:\W ...

  9. image控件显示图片_Unity之Image amp; Raw Image

    推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 我的个人博客 前言 在Unity中,图片组件主要有Image和Raw Image,今天,偶然发现了项目中别人有用到Raw Image, ...

最新文章

  1. js基础知识温习:Javascript中如何模拟私有方法
  2. 安装sql 2005 闪退 连接到服务器失败。错误:0x80070424
  3. 1、数据库设计的基本步骤
  4. oracle v$sql last_load_time,Oracle 等待事件V$视图
  5. Javaweb开发环境与搭建
  6. 【Vegas原创】GridView修改表头,并导出Excel(C#版)
  7. P2597 [ZJOI2012]灾难(top+lca)
  8. 方立勋_30天掌握JavaWeb_response
  9. Spring Boot log4j2 configuration example
  10. Redis笔记之基本数据结构 字典
  11. IDEA快捷键拆解系列(三):Edit篇
  12. apk安装到电视上看不到图标_零基础搭建电视直播APP平台第二弹(修改APP)
  13. 排序算法之六 堆排序(C++版本)
  14. python两个下划线怎么打_Python中单下划线与双下划线用法总结
  15. 产业分析:东方甄选vs罗永浩直播间
  16. numpy ndarry根据条件筛选数据
  17. 听老外吐槽框架设计,Why I Hate Frameworks?
  18. 【自动驾驶】自动驾驶和手动驾驶的平滑切换控制方案探讨
  19. 技术总监任职资格要求
  20. 前面的可以显示位置国旗,后面的可显示地区和线路

热门文章

  1. vite modifyVars
  2. perl 数组跟哈希
  3. Underscore.js 入门教程
  4. 趣图:执行到断点处,程序崩溃
  5. 基于Android studio的使用百度地图API定位到大西洋几内亚湾(一片蓝图)问题
  6. [从头学数学] 第180节 解三角形
  7. 安恒杯八月月赛,Misc:水货
  8. GetDlgItem所获取CWnd*的时效性
  9. wireshark设置端口镜像_H3C交换机端口镜像,抓取数据包wireshark实战
  10. Cesium中实现体渲染