有一个问题:在作一个项目,flash中要显示一张图片,图片是由java通过stream传送的。
因为flash图片的舞台固定700*400,所以java要把拿到的图片都等比地处理成700*400。
例如:
1400*500->700*250,而且图片的信息不能少(就是说不能截一部分)
500*400, 不用处理,flash自适应。我用BufferedImage类指定大小的话,图片大的只会截取,图片小的会以黑色填充。忘大家不吝赐教!

解决方案 »

  1.   

    public class JpgTest 
    {
    public void jpgTset() throws Exception

    File _file = new File("d:\\2.GIF"); //读入文件 
    System.out.println("1111111"+_file);
    //FileImageInputStream fiis = new FileImageInputStream(_file); 
    Image src = javax.imageio.ImageIO.read(_file); //构造Image对象 
    //Image src = javax.imageio.ImageIO.read(fiis); //构造Image对象 
    int wideth=src.getWidth(null); //得到源图宽 
    int height=src.getHeight(null); //得到源图长 
    System.out.println("the wideth:"+wideth);
    System.out.println("the height:"+height);
    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("D:/ewfile.gif"); //输出到文件流 
    //*********
     AnimatedGifEncoder gifEncoder = new AnimatedGifEncoder();
        gifEncoder.start(out);
        gifEncoder.addFrame(tag);
        gifEncoder.finish();
    //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

    //encoder.encode(tag); //近JPEG编码 
    out.close(); 


    public static void main(String[] args)

    try

    new JpgTest().jpgTset(); 
    }catch(Exception e)

    e.printStackTrace(); 

    } }
      

  2.   

    //*********
     AnimatedGifEncoder gifEncoder = new AnimatedGifEncoder();
        gifEncoder.start(out);
        gifEncoder.addFrame(tag);
        gifEncoder.finish();
    这里不要了。这个是gif格式的,
    //JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

    //encoder.encode(tag); //近JPEG编码 
    把这个用上这个是JPG格式的
      

  3.   


        BufferedImage bi;
        ...    AffineTransform at = new AffineTransform();
        at.scale(( newWidth / bi.getWidth(), newHeight / bi.getHeight());    AffineTransformOp biop = 
            new AffineTransformOp(at, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
        
        BufferedImage newbi = biop.filter(bi, null);
      

  4.   

    Jpanel jp=new JPanel();
    Image image=new ImageIcon("game/img/kuai.gif").getImage();
    int width=image.getWidth();
    int height=image.getHeight();
    .........
    .........处理width  height
    ..........

    Image im=jp.createImage(width,height);Graphics g=im.getGraphics();
    g.drawImage(image,x,y,w,h,null);然后你把图片im输出就可以了