Graphics2D.scale(2.0,2.0); orAffineTransform trans=AffineTransform.setToScale(2.0,2.0);
g2d.drawImage(img,trans,this);

解决方案 »

  1.   

    g2d.drawImage(img,trans,this);
    如果非面版显示呢?请大哥指教。
    小弟的原代码,大小的问题解决了,但是,
    缩少图片后,质量好差,不知道应该如何
    才可以抗失真。希望各位大哥能够赐教。
    小弟在这里谢谢各位了。import javax.imageio.*;
    import java.io.*;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.net.URL;
    import java.awt.Image;
    import java.awt.image.AffineTransformOp;
    import java.awt.geom.AffineTransform;public class javaJPG {  public static void main(String args[]) throws IOException {
        double Ratio=0.0;
        String name = "http://www.google.com/intl/zh-CN_ALL/images/logo.gif";
        URL filestring = new URL(name);
        BufferedImage Bi = ImageIO.read(filestring);
        Image Itemp = Bi.getScaledInstance(200, 200, Bi.SCALE_SMOOTH);
        if ( (Bi.getHeight() > 200) || (Bi.getWidth() > 200)) {
          if (Bi.getHeight() > Bi.getWidth()) {
            Ratio = 200.0 / Bi.getHeight();
          }
          else {
            Ratio = 200.0 / Bi.getWidth();
          }
        }    AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(Ratio, Ratio), null);
        Itemp = op.filter(Bi, null);
        String formatName = "jpg";
        String outputFilename = "c:/name" + "." + formatName;
        File outputFile = new File(outputFilename);
        boolean writerExists = ImageIO.write((BufferedImage)Itemp, formatName, outputFile);
      }
    }
      

  2.   

    double Ratio=1.0;
    ...
    BufferedImage Itemp;
    // Because you use AffineTransformOp to do transform
    // Image Itemp = Bi.getScaledInstance(200, 200, Bi.SCALE_SMOOTH); 
     ImageIO.write(Itemp, formatName, outputFile); //no castjpg is a losing format. to improve quality, you can use .png format. 
    another thing is ImageIo.write doesn't support .gif
      

  3.   

    其实关键的问题在于缩放时你所采用的插值算法:
    o 线性插值
    o 双线性插值
    o 样条曲线插值
    使用的插值算法从上往下,质量越好,速度越慢。
    建议你参考一些数字图像处理的书籍。
      

  4.   

    那请教大哥究竟应该如何去做呢?
    ImageIO不支持gif是写出不是读入。import javax.imageio.*;
    public class ShowImageIOInfo
    {
    public ShowImageIOInfo() {
    String names[] = ImageIO.getReaderFormatNames();
    for (int i=0; i<names.length; ++i) {
    System.out.println( "reader "+names[i] );
    }
    names = ImageIO.getWriterFormatNames();
    for (int i=0; i<names.length; ++i) {
    System.out.println( "writer "+names[i] );
    }
    }
    static public void main( String args[] ) throws Exception {
    new ShowImageIOInfo();
    }
    }可以输出支持的格式。
    输出结果为:reader png
    reader jpeg
    reader JPEG
    reader gif
    reader jpg
    reader JPG
    writer PNG
    writer png
    writer jpeg
    writer JPEG
    writer jpg
    writer JPG而且经过测试,缩放后,一张6K的jpg和
    一张60K的png质量好像也差不了多少。
    请问如何抗锯齿的呢?op.setRenderingHints(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);好像是不行的。小弟非常希望各位大哥能够帮忙。mattus_zhao(人生十有八九不如意) 兄说的方法,
    小弟完全不会。能否举个例子呢?例如就在这个
    程序里面,如果我要抗锯齿,输出的图片效果好点,
    我可以怎么做,程序应该怎么写呢?今天是大年初一,小弟恭祝各位大哥新年快乐,身体
    健康,恭喜发财!!恭喜恭喜!
      

  5.   

    我说的其实是一些数字图像处理方面的理论知识,具体到实现上面,其实 J2sdk 里面的
    BufferedImage 类已经实现了相关的内容:
    比如三个插值算法,还有在图形绘制时候的反走样,就象你上面所用的 setRenderingHints方法。
    如果你对 Java 2D 有兴趣的话,可以参考 J2SDK 的文档,上面有一节专门讲述 Java 2D API 的。
      

  6.   

    不会吧??…………那么photoshop为什么能处理得如何
    圆滑的呢?java的2d库里面应该有相应方法吧,只是偶
    不懂啊………………