imageloader.java

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

JAVA
97
字号
package magic.graphics;

import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.util.*;

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

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

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

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

    image = applet.getImage(applet.getDocumentBase(), filename);

    if (wait) {
      // 为这个图像创建一个新的MediaTracker对象
      MediaTracker mt = new MediaTracker(applet);

      // 加载图像条
      mt.addImage(image, 0);
      try {
        // 等待加载主图像
        mt.waitForID(0);
      }
      catch (InterruptedException e) { /* 什么也不做 */}
    }

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

  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 = applet.createImage(new FilteredImageSource(sourceProducer,
        new CropImageFilter(x, y, width, height)));

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

    return cell;
  }

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

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

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

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

} // ImageLoader

⌨️ 快捷键说明

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