日期:2014-05-20  浏览次数:20927 次

scaledImg = (BufferedImage)tt.getScaledInstance(width, height,Image.SCALE_FAST); 返回值说不相配,这是怎么回事?
scaledImg 是 BufferedImage类型的。。。

------解决方案--------------------
因为你的tt.getScaledInstance(width, height,Image.SCALE_FAST);返回的是ToolkitImage类型,当然不能转化为BufferedImage了。
------解决方案--------------------
你的tt对象估计是java.awt.Image对象,所以才会返回ToolkitImage类型。给你段代码看看
Java code

  import java.io.File;
  import java.io.FileOutputStream;
  import java.awt.Graphics;
  import java.awt.Image;
  import java.awt.image.BufferedImage;
  
  import com.sun.image.codec.jpeg.JPEGCodec;
  import com.sun.image.codec.jpeg.JPEGImageEncoder;
  
  public class JpgTest {
  
  public void JpgTset() throws Exception{
  File _file = new File("/Order005-0001.jpg"); //读入文件
  Image src = javax.imageio.ImageIO.read(_file); //构造Image对象
  int wideth=src.getWidth(null); //得到源图宽
  int height=src.getHeight(null); //得到源图长
  BufferedImage tag = new BufferedImage(wideth/2,height/2,BufferedImage.TYPE_INT_RGB);
  tag.getGraphics().drawImage(src,0,0,wideth/2,height/2,null); //绘制缩小后的图
  FileOutputStream out=new FileOutputStream("newfile.jpg"); //输出到文件流
  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); 
  encoder.encode(tag); //近JPEG编码
  //System.out.print(width+"*"+height); 
  out.close();
  }
  }