当前位置: 代码迷 >> Java Web开发 >> 对于图像处理,先谢了
  详细解决方案

对于图像处理,先谢了

热度:219   发布时间:2016-04-17 12:38:43.0
关于图像处理,先谢了
写了个缩微图的程序如下,我是先把要处理的图片裁切成要求的比例,然后再缩放.
可是裁切没问题,可是加上缩放就出错,哪位高手帮帮小弟!
谢谢了


Java code
    private void getLittleImg(HttpServletRequest request, String fromdir,            String img) {        String ext = img.substring(img.length()-3);//后缀名        double littleH = 84.00;//生成图片的高        double littleW = 118.00;//生成图片的宽        double HWRatio = littleH/littleW;        double excRatio = 0.0;        File imgFile = new File(request.getSession().getServletContext().getRealPath("/")+ fromdir, img);        File excFile = new File(request.getSession().getServletContext().getRealPath("/") + fromdir + "/xImg", img);        try {            BufferedImage bi = ImageIO.read(imgFile);                        double imgFileRatio = new Double(bi.getHeight())/new Double(bi.getWidth());            Image excImage = bi.getScaledInstance ((int)littleW,(int)littleH,Image.SCALE_SMOOTH);                        excRatio = bi.getWidth()/littleW;            if(imgFileRatio<HWRatio){                int excFileWidth = (int) (littleW*bi.getHeight()/littleH);                int excFileY = (bi.getWidth()- excFileWidth)/2;                excImage = bi.getSubimage(excFileY,0,excFileWidth,bi.getHeight());                excRatio = excFileWidth/littleW;            }else if(imgFileRatio>HWRatio){                                int excFileHeight = (int) (littleH*bi.getWidth()/littleW);                int excFileX = (bi.getHeight()- excFileHeight)/2;                excImage= bi.getSubimage(0,excFileX,bi.getWidth(),excFileHeight);            }                        [color=#FF0000]//以上使处理图片长宽比例符合生成图片要求,没有问题[/color]                        excImage=excImage.getScaledInstance((int)littleW,(int)littleH,Image.SCALE_DEFAULT[color=#FF0000]);//但这句想改大小却有问题[/color]            ImageIO.write((BufferedImage) excImage, ext, excFile);                    } catch (Exception ex) {            log.error("上传图片生成缩微图失败", ex);        }    }


------解决方案--------------------
你这里一个裁减一个缩放都是同一个变量excImage,建议使用2个不同的变量试试看
------解决方案--------------------
记得那本厚厚的入门书,讲swing很多那本,高级篇那本,里面有实例
  相关解决方案