imageloader.java

来自「java learn PPT java learn PPT java learn」· Java 代码 · 共 93 行

JAVA
93
字号
     import java.awt.*;
     import java.awt.image.*;
     import java.util.*;

     public class ImageLoader extends Object
     {
          // 加载并浏览加载图像的Applet
          protected Frame frame;

          // 一个Image,以及它的宽和高
          protected Image  image;
          protected int    imageWidth;
          protected int    imageHeight;

          // 缓冲区,用于在图像加载后立即绘制它们
          protected static BufferedImage buffer = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);

          public ImageLoader(
              Frame a,         // 创建并浏览所加载的图像
              String filename,  // 从磁盘上加载的图像名
              boolean wait      // 如果为true,则添加到一个MediaTracker对象并等待加载 
              )
          {
               frame = a;

               image = frame.getToolkit().getImage(filename);

               if(wait)
               {
                    // 为这个图像创建一个新的MediaTracker对象
                    MediaTracker mt = new MediaTracker(frame);
  
                    // 加载图像条
                    mt.addImage(image, 0);
                    try
                    {  
                         // 等待加载主图像  
                         mt.waitForID(0);
                    }
                    catch(InterruptedException e) { /* 什么也不做 */ }
               }

               // 得到图像的宽和高
               imageWidth = image.getWidth(frame);
               imageHeight = image.getHeight(frame);
          }

          public int getImageWidth()
          {
               return imageWidth;
          }

          public int getImageHeight()
          {
               return imageHeight;
          }

          public Image getImage()
          {
               return image;
          }

          // 使用一个图像过滤器从图像中获取一个单元 
          public Image extractCell(int x, int y, int width, int height)
          {
               // 得到主图像的 ImageProducer 源 
               ImageProducer sourceProducer = image.getSource();

               Image cell = frame.createImage(new FilteredImageSource(sourceProducer, 
                                             new CropImageFilter(x, y, width, height)));

               // 把这个单元绘制到屏外缓冲上 
               buffer.getGraphics().drawImage(cell, 0, 0, frame);

               return cell;
          }

          // 从图像中获取一个单元并根据指定的宽度和高度对它进行缩放处理 
          public Image extractCellScaled(int x, int y, int width, int height, int sw, int sh)
          {
               // 从主图片中得到ImageProducer源 
               ImageProducer sourceProducer = image.getSource();

               Image cell = frame.createImage(new FilteredImageSource(sourceProducer, 
                                             new CropImageFilter(x, y, width, height)));

               // 把单元绘制到屏外缓冲中 
               buffer.getGraphics().drawImage(cell, 0, 0, frame);

               return cell.getScaledInstance(sw, sh, Image.SCALE_SMOOTH);
          }

     }    // ImageLoader 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?