大学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);
}
}
评论