//旋转小程序二维码。 // /webapp/static/temp/这个文件夹下面的图片。可以删除。定时删除。 String temp_file_path = "/static/temp/"+ DateUtil.formatDate(new Date(), "yyyyMMdd")+"/"; try { //从服务器中读取照片,用new URL(),读取本地磁盘中照片用new File() BufferedImage bufferedimage = ImageIO.read(new File(webPath + uploadFile + fileName)); int angle = 90; int w =0; int h= 0; if(angle!=0){//旋转角度不等于零 //作者 这里没有判断 是不是 正方形这个步写不写都行。 if(angle / 90%2 ==1){//旋转角度为90或270...时,图像的长款对换 h = bufferedimage.getWidth(); w = bufferedimage.getHeight(); }else{ w = bufferedimage.getWidth(); h = bufferedimage.getHeight(); } }else {//旋转角度为0时,不做操作 } //将像素值转换为颜色分量和 alpha 分量的方法,返回此 ColorModel 的转换类型。 int type = bufferedimage.getColorModel().getTransparency(); BufferedImage img; img = new BufferedImage(w, h, type); //创建一个 Graphics2D,可以将它绘制到此 BufferedImage 中。 Graphics2D graphics2d = img.createGraphics(); //将当前 Graphics2D Transform 与平移转换连接。后续呈现相对于前一位置平移指定的距离。 graphics2d.translate((w-bufferedimage.getWidth())/2, (h-bufferedimage.getHeight())/2); graphics2d.setRenderingHint( RenderingHints.KEY_INTERPOLATION,//插值提示键 RenderingHints.VALUE_INTERPOLATION_BILINEAR);//插值提示值——图像中最接近整数坐标样本的 4 种颜色样本被线性地插入,以生成一个颜色样本 //注意此处是员图片的宽和长,不是计算后的,用计算后的宽和长,保存后又黑边,因为此处错误找了三四个小时 graphics2d.rotate(Math.toRadians(angle), bufferedimage.getWidth() / 2, bufferedimage.getHeight() / 2); graphics2d.drawImage(bufferedimage, null, null); graphics2d.dispose(); FileUtil.makeDirs(webPath + temp_file_path); ImageIO.write(img, "jpg", new File(webPath+temp_file_path + fileName + ".jpg")); //保存旋转后的小程序 二维码, }catch (Exception e){ System.out.println("旋转图片出错了"); } //旋转小程序二维码。
站长微信:xiaomao0055
站长QQ:14496453