//旋转小程序二维码。
// /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