日期:2014-05-17  浏览次数:20762 次

png图片实现旋转问题?
Java code

public int ImageRotate(InputStream image, String dir, String fileName,int theta){
        log.info("图片旋转!");
        int iRes = 99999;
        String suffix = "JPEG";
        if(fileName.endsWith(".jpg") || fileName.endsWith(".JPG"))
            suffix = "JPEG";
        if(fileName.endsWith(".bmp") || fileName.endsWith(".BMP"))
            suffix = "BMP";
        if(fileName.endsWith(".png") || fileName.endsWith(".PNG"))
            suffix = "PNG";
        BufferedImage srcImg = null;
        BufferedImage newImg = null;
        try{
            srcImg = javax.imageio.ImageIO.read(image);
//            JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(image); 
//            srcImg = decoder.decodeAsBufferedImage();
            int width = srcImg.getWidth();
            int height = srcImg.getHeight();
            int x = Math.round(width /2);
            int y = Math.round(height/2);
            double angdeg = 0;
            if(theta==1){
               angdeg = 90;    
               x = y;
            }else{
               angdeg = -90; 
               y = x;
            }            
            System.out.println(x+" "+y+"  pic type: "+srcImg.getType());
            newImg = new BufferedImage(height,width,srcImg.getType());
            //旋转
            AffineTransform atf = AffineTransform.getScaleInstance(1, 1);
            atf.rotate(Math.toRadians(angdeg),x,y);                                      AffineTransformOp atfo = new AffineTransformOp(atf,1);
            atfo.filter(srcImg, newImg);
            ImageIO.write(newImg,suffix,new File("c:/a.png"));
            iRes = 0;
        }catch(Exception e){
            e.printStackTrace();
        }
        return iRes ;
        
    }


现在遇到问题是,当传入png图片时,报异常?
希望大家帮忙实现下png图片的旋转,谢先

------解决方案--------------------
用java实现的图片旋转?强
------解决方案--------------------
没做过,帮你顶一下。
------解决方案--------------------
先将像素存入一个二维数组

然后循环重新画(将像素输出到计算后对应的位置)就可以了