import java.awt.*;
import java.awt.image.*;
import java.net.*;
public class Cutimg extends Frame{
private Image im;
private Image cropped;private int width,height;
public static void main(String[] args)
{Cutimg frame=new Cutimg();
frame.setVisible(true);
}
public Cutimg(){
MediaTracker mt=new MediaTracker(this);
im=Toolkit.getDefaultToolkit().getImage("ppmm.jpg");
mt.addImage(im,0);
try{mt.waitForID(0);}
catch(Exception e){e.printStackTrace();}
width=im.getWidth(this);
height=im.getHeight(this);
ImageFilter filter=new CropImageFilter(10,10,100,100);
FilteredImageSource fis=new FilteredImageSource(im.getSource(),filter);
cropped=createImage(fis);
}
public void paint(Graphics g){
g.drawImage(im,0,0,this);
g.drawImage(cropped,0,0,this);
}}
本人初学JAVA不久:
这是我的图像切割程序,我希望可以显示原图像和切割后的图像。但是,却只能显示原图像。不知道为什么。希望可以得到高手指点:)
import java.awt.image.*;
import java.net.*;
public class Cutimg extends Frame{
private Image im;
private Image cropped;private int width,height;
public static void main(String[] args)
{Cutimg frame=new Cutimg();
frame.setVisible(true);
}
public Cutimg(){
MediaTracker mt=new MediaTracker(this);
im=Toolkit.getDefaultToolkit().getImage("ppmm.jpg");
mt.addImage(im,0);
try{mt.waitForID(0);}
catch(Exception e){e.printStackTrace();}
width=im.getWidth(this);
height=im.getHeight(this);
ImageFilter filter=new CropImageFilter(10,10,100,100);
FilteredImageSource fis=new FilteredImageSource(im.getSource(),filter);
cropped=createImage(fis);
}
public void paint(Graphics g){
g.drawImage(im,0,0,this);
g.drawImage(cropped,0,0,this);
}}
本人初学JAVA不久:
这是我的图像切割程序,我希望可以显示原图像和切割后的图像。但是,却只能显示原图像。不知道为什么。希望可以得到高手指点:)
其次,如果ppmm.jpg本来的大小就是100*100像素的话你可以试试把ImageFilter filter=new CropImageFilter(10,10,100,100);的前两个参数改大一点,因为这四个参数都是以像素为单位的,所以10个像素对于肉眼来说很细小,你可能察觉不出,为什么这么说,因为你在paint方法里面在坐标0,0的地方先画了原图,然后才把切割好的图片方上去,把原图覆盖了,所以基本上你也察觉不到有什么变化了。
谢谢你