正文

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); }}

阅读(3523) | 评论(0)


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

评论

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