swt中Image如何缩放?如何调整亮度?
解决方案 »
- 急!请问怎样发送socket请求包,并获得返回数据
- 一个出错问题,急
- SWING镶嵌HTML地图
- {向java专家提问题} java系统框架包结构,与项目实现的系统包结构,欢迎大家建议
- 现在有个包文件,里面有 a 类,如何获取包名
- 正则表达式到底咋回事?
- 为什么排序时间会为0
- PreparedStatement 语句 通过 set..赋值后 如何读取 赋值后的sql语句
- ArrayList已经取代了Vector为什么Sun的例子里还在用Vector,包括最新的例子,这是为什么?
- JBuilder爱好者请进
- 大家都来看看,写文件时,如果数据量非常大,怎样在占用固定内存下高效的进行写操作。
- Exception in thread "main" java.lang.NullPointerException
import java.awt.image.*;public class ImageProcess {
public static void main(String[] args) {
//原图
Image imSrc=Toolkit.getDefaultToolkit().getImage("F:/Downloads/阿猫阿狗2简体中文版安装包/新手说明书/1.jpg");
FilteredImageSource fisScale=new FilteredImageSource(imSrc.getSource(),new AreaAveragingScaleFilter(800,600));
//缩放后的图
Image imScale=Toolkit.getDefaultToolkit().createImage(fisScale);
FilteredImageSource fisPower=new FilteredImageSource(imScale.getSource(),new PowerImage(1.0f,2.0f,2.0f,2.0f));
//加亮后的图
Image imPower=Toolkit.getDefaultToolkit().createImage(fisPower);
Frame jf=new Frame();
jf.setLayout(new FlowLayout());
jf.add(new ImageLabel(imSrc));
jf.add(new ImageLabel(imScale));
jf.add(new ImageLabel(imPower));
jf.pack();
jf.setVisible(true);
}
}class ImageLabel extends Label{
protected Image image=null;
public ImageLabel(Image im){
image=im;
MediaTracker mt=new MediaTracker(this);
mt.addImage(image,0);
try{
mt.waitForID(0);
}catch(InterruptedException ie){ }
setPreferredSize(new Dimension(image.getWidth(this),image.getHeight(this)));
}
public void paint(Graphics g){
g.drawImage(image,0,0,Color.white,this);
}
}class PowerImage extends RGBImageFilter{
private float ap=1;
private float rp=1;
private float gp=1;
private float bp=1;
public PowerImage(float aPower,float rPower,float gPower,float bPower){
ap=aPower;
rp=rPower;
gp=gPower;
bp=bPower;
}
public int filterRGB(int x, int y, int rgb) {
DirectColorModel dcm=(DirectColorModel)ColorModel.getRGBdefault();
int alpha =(int)( dcm.getAlpha(rgb)*ap);
int red = (int)(dcm.getRed (rgb)*rp);
int green = (int)(dcm.getGreen(rgb)*gp);
int blue = (int)(dcm.getBlue (rgb)*bp);
if(alpha>255)alpha=255;
if(red>255)red=255;
if(green>255)green=255;
if(blue>255)blue=255;
return alpha << 24 | red << 16 | green << 8 | blue;
}
}
当我运行你的程序时有一个问题:
"ImageProcess.java": cannot resolve symbol: method setPreferredSize (java.awt.Dimension)in class ImageLabel at line 37, column 17
楼主不妨去看看
我当时作的一个项目就是从哪里边找到了一些方法的!