正文

JAVA图像相关代码库2008-05-31 10:35:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/insky/35792.html

分享到:

JAVA图像相关代码库

    大学4年,写了不少Java的代码,很多一开始碰到问题都已经得到较好解决,如显示,空指针等等。但是代码太多,容易忘记,现归纳整理如下:

 

如果大家有自己的独到见解和实用代码。

也欢迎以回复本帖共享自己的产品

 

1,ImageLoader类,用于处理JAVA图像加载,变换,显示代码

    相信大家都有过用JAVA加载图片失败或出现一些其他莫名错误的经历,因为JAVA加载图片是新开启一个线程,而加载需要一个处于显示状态的监视器(通常的AWT,Swing组件即可)。这两点增加了图片加载失败的可能姓。下面的ImageLoader类可以方便的加载图片,并强制等待图片加载完毕再执行后面的代码而非新开启线程。另外提供了对图像缩放操作的函数。

 

例子:
ImageLoader loader = new ImageLoader(this,"background.gif",true);
this.backgroundImag = loader.getImage();

//ImageLoader.java

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


public class ImageLoader
{
 
  protected Component component;

 
  protected Image image;
 
   
  protected int imageWidth;

  
  protected int imageHeight;
 
 
  protected static BufferedImage buffer = new BufferedImage(200,200,BufferedImage.TYPE_INT_RGB);  
 
 
 public ImageLoader( Component component,String fileName,boolean wait)
 {
  this.component = component;
  image = this.component.getToolkit().getImage(fileName);
 
  if(wait)
  {
   MediaTracker mt = new MediaTracker(this.component);
   mt.addImage(image,0);
   try
   {
    mt.waitForID(0);
   }
   catch(Exception e){e.printStackTrace();}
  }
 
  this.imageWidth = image.getWidth(this.component);
  this.imageHeight = image.getHeight(this.component);
 }
 
 public ImageLoader(ImageObserver iobserver,Image image)
 {
  this.image = image;
  this.imageWidth  = image.getWidth(iobserver);
  this.imageHeight = image.getHeight(iobserver);
  this.component = (Component)iobserver;
 }
 
 
 public int getImageWidth()
 {
  return this.imageWidth;
 }
 
 
 public int getImageHeight()
 {
  return this.imageHeight;
 }
 
 
 public Image getImage()
 {
  return image;
 }
 
 
 public Image extractCell(int x,int y,int width,int height)
 
  //得到图象源
  ImageProducer sourceProducer = image.getSource();
 
  Image cell = component.getToolkit().createImage(new FilteredImageSource
   (sourceProducer,new CropImageFilter(x,y,width,height)));
 
  MediaTracker mt = new MediaTracker(this.component);
  mt.addImage(cell,0);
  try
  {
   mt.waitForID(0);
  }
  catch(Exception e){e.printStackTrace();}
 
  buffer.getGraphics().drawImage(cell,0,0,component);
  return cell;
 }
 
 
 public Image extractCellScaled(int x,int y,int width,int height,
           int sw,int sh)
 {
  Image cell = this.extractCell(x,y,width,height);
  return cell.getScaledInstance(sw,sh,Image.SCALE_SMOOTH);
 }
}

阅读(3495) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册