java实现图片角度旋转并获得图片信息

  

本文实例为大家分享了java实现图片角度旋转并获得图片信息的具体代码,供大家参考,具体内容如下

        公开课演示{/* *   *调整图片角度   *由dongxh 2017年11月1日下午3:51:08   * @param src   * @param天使   * @return   */公共静态BufferedImage旋转(图像src, int天使){   int src_width=src.getWidth(空);   int src_height=src.getHeight(空);//计算新的图像大小   矩形rect_des=CalcRotatedSize(新矩形(新维度(   src_width src_height)),天使);      BufferedImage res=零;   res=new BufferedImage (rect_des。宽度、rect_des.height   BufferedImage.TYPE_INT_RGB);   Graphics2D g2=res.createGraphics ();//转换   g2.translate (rect_des。宽度- src_width)/2,   (rect_des。高度- src_height)/2);   g2.rotate (Math.toRadians(天使),src_width/2, src_height/2);      g2。drawImage (src,空,空);   返回res;   }/* *   *计算旋转参数   *由dongxh 2017年11月1日下午3:51:29   * @param src   * @param天使   * @return   */公共静态矩形CalcRotatedSize(矩形src, int天使){//如果天使大于90度,我们需要做一些转换   如果(天使祝辞=90){   如果(天使/90% 2==1){   int temp=src.height;   src。身高=src.width;   src。宽度=temp;   }   天使天使%=90;   }      双r=Math.sqrt (src。高度* src。身高+ src。宽度* src.width)/2;   双len=2 * sin (Math.toRadians(天使)/2)* r;   双angel_alpha=(数学。π- Math.toRadians(天使))/2;   双angel_dalta_width=Math.atan (src(双)。高度/src.width);   双angel_dalta_height=Math.atan (src(双)。宽/src.height);      int len_dalta_width=(int) (len * Math.cos(数学。π- angel_alpha   - angel_dalta_width));   int len_dalta_height=(int) (len * Math.cos(数学。π- angel_alpha   - angel_dalta_height));   int des_width=src。宽度+ len_dalta_width * 2;   int des_height=src。身高+ len_dalta_height * 2;   返回新矩形(新维度(des_width des_height));   }/* *   *获得图片调整角度   *由dongxh 2017年11月1日下午3:40:20   * @param imgFile   * @return   */公共静态整数getImgRotateAngle(字符串imgFile) {   整数天使=0;   元数据的元数据=https://www.yisu.com/zixun/null;   尝试{   如果(StringUtils.isBlank (imgFile))返回的天使;   文件_img_file_=新文件(imgFile);   如果(! _img_file_.exists()返回的天使;   元数据=JpegMetadataReader.readMetadata (_img_file_);   目录目录=metadata.getDirectory (ExifDirectory.class);   如果(目录!=null & & directory.containsTag (ExifDirectory.TAG_ORIENTATION)) {   int取向=directory.getInt (ExifDirectory.TAG_ORIENTATION);//原图片的方向信息   如果(6==取向){//6旋转90   天使=90;   }else if(3==取向){//3旋转180   天使=180;   }else if(8==取向){//8旋转90   天使=270;   }   }   }捕捉(异常e) {   e.printStackTrace ();   }   返回的天使;   }/* *   *调整图片角度   *由dongxh 2017年11月1日下午4:31:20   * @param imgFile   */公共静态孔隙rotateImage(字符串imgFile) {   尝试{   如果(StringUtils.isBlank (imgFile)) {   文件_img_file_=新文件(imgFile);   如果(_img_file_.exists ()) {   整数天使=getImgRotateAngle (imgFile);   如果(天使==0)返回;   BufferedImage src=ImageIO.read (_img_file_);   BufferedImage des=旋转(src,天使);   ImageIO。写(des, jpg, _img_file_);   }   }   }捕捉(IOException e) {   e.printStackTrace ();   }   }      公共静态void main (String [] args){抛出异常   字符串fromPic=" d://88888//IMG_20171004_122718.jpg”;//rotateImage(文件);      整数天使=getImgRotateAngle (fromPic);   System.out.println(天使);   Thumbnails.of (fromPic)   .rotate(天使)   .scale(0.2度)   .outputFormat (“jpg”)   .outputQuality(0.2度)   .toFile (fromPic);      System.out.println (“====?;   }      }      

获得图片使用metadata-extractor

        & lt; dependency>   & lt; groupId> com.drewnoakes   & lt; artifactId> metadata-extractor   & lt; version> 2.4.0-beta-1   & lt;/dependency>      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

java实现图片角度旋转并获得图片信息