java实现图片角度旋转并获得图片信息
本文实例为大家分享了java实现图片角度旋转并获得图片信息的具体代码,供大家参考,具体内容如下
publicclassDemo{ /** *调整图片角度 *makebydongxh2017年11月1日下午3:51:08 *@paramsrc *@paramangel *@return */ publicstaticBufferedImagerotate(Imagesrc,intangel){ intsrc_width=src.getWidth(null); intsrc_height=src.getHeight(null); //calculatethenewimagesize Rectanglerect_des=CalcRotatedSize(newRectangle(newDimension( src_width,src_height)),angel); BufferedImageres=null; res=newBufferedImage(rect_des.width,rect_des.height, BufferedImage.TYPE_INT_RGB); Graphics2Dg2=res.createGraphics(); //transform g2.translate((rect_des.width-src_width)/2, (rect_des.height-src_height)/2); g2.rotate(Math.toRadians(angel),src_width/2,src_height/2); g2.drawImage(src,null,null); returnres; } /** *计算旋转参数 *makebydongxh2017年11月1日下午3:51:29 *@paramsrc *@paramangel *@return */ publicstaticRectangleCalcRotatedSize(Rectanglesrc,intangel){ //ifangelisgreaterthan90degree,weneedtodosomeconversion if(angel>=90){ if(angel/90%2==1){ inttemp=src.height; src.height=src.width; src.width=temp; } angel=angel%90; } doubler=Math.sqrt(src.height*src.height+src.width*src.width)/2; doublelen=2*Math.sin(Math.toRadians(angel)/2)*r; doubleangel_alpha=(Math.PI-Math.toRadians(angel))/2; doubleangel_dalta_width=Math.atan((double)src.height/src.width); doubleangel_dalta_height=Math.atan((double)src.width/src.height); intlen_dalta_width=(int)(len*Math.cos(Math.PI-angel_alpha -angel_dalta_width)); intlen_dalta_height=(int)(len*Math.cos(Math.PI-angel_alpha -angel_dalta_height)); intdes_width=src.width+len_dalta_width*2; intdes_height=src.height+len_dalta_height*2; returnnewRectangle(newDimension(des_width,des_height)); } /** *获得图片调整角度 *makebydongxh2017年11月1日下午3:40:20 *@paramimgFile *@return */ publicstaticIntegergetImgRotateAngle(StringimgFile){ Integerangel=0; Metadatametadata=null; try{ if(StringUtils.isBlank(imgFile))returnangel; File_img_file_=newFile(imgFile); if(!_img_file_.exists())returnangel; metadata=JpegMetadataReader.readMetadata(_img_file_); Directorydirectory=metadata.getDirectory(ExifDirectory.class); if(directory!=null&&directory.containsTag(ExifDirectory.TAG_ORIENTATION)){ intorientation=directory.getInt(ExifDirectory.TAG_ORIENTATION); //原图片的方向信息 if(6==orientation){ //6旋转90 angel=90; }elseif(3==orientation){ //3旋转180 angel=180; }elseif(8==orientation){ //8旋转90 angel=270; } } }catch(Exceptione){ e.printStackTrace(); } returnangel; } /** *调整图片角度 *makebydongxh2017年11月1日下午4:31:20 *@paramimgFile */ publicstaticvoidrotateImage(StringimgFile){ try{ if(StringUtils.isBlank(imgFile)){ File_img_file_=newFile(imgFile); if(_img_file_.exists()){ Integerangel=getImgRotateAngle(imgFile); if(angel==0)return; BufferedImagesrc=ImageIO.read(_img_file_); BufferedImagedes=rotate(src,angel); ImageIO.write(des,"jpg",_img_file_); } } }catch(IOExceptione){ e.printStackTrace(); } } publicstaticvoidmain(String[]args)throwsException{ StringfromPic="d://88888//IMG_20171004_122718.jpg"; //rotateImage(file); Integerangel=getImgRotateAngle(fromPic); System.out.println(angel); Thumbnails.of(fromPic) .rotate(angel) .scale(0.2f) .outputFormat("jpg") .outputQuality(0.2f) .toFile(fromPic); System.out.println("==End=="); } }
获得图片使用metadata-extractor
com.drewnoakes metadata-extractor 2.4.0-beta-1
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。