日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2025/4/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java旋转图片并画出_java实现图片角度旋转并获得图片信息 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文實例為大家分享了java實現(xiàn)圖片角度旋轉并獲得圖片信息的具體代碼,供大家參考,具體內容如下

public class demo {

/**

* 調整圖片角度

* make by dongxh 2017年11月1日下午3:51:08

* @param src

* @param angel

* @return

*/

public static bufferedimage rotate(image src, int angel) {

int src_width = src.getwidth(null);

int src_height = src.getheight(null);

// calculate the new image size

rectangle rect_des = calcrotatedsize(new rectangle(new dimension(

src_width, src_height)), angel);

bufferedimage res = null;

res = new bufferedimage(rect_des.width, rect_des.height,

bufferedimage.type_int_rgb);

graphics2d g2 = 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);

return res;

}

/**

* 計算旋轉參數(shù)

* make by dongxh 2017年11月1日下午3:51:29

* @param src

* @param angel

* @return

*/

public static rectangle calcrotatedsize(rectangle src, int angel) {

// if angel is greater than 90 degree, we need to do some conversion

if (angel >= 90) {

if(angel / 90 % 2 == 1){

int temp = src.height;

src.height = src.width;

src.width = temp;

}

angel = angel % 90;

}

double r = math.sqrt(src.height * src.height + src.width * src.width) / 2;

double len = 2 * math.sin(math.toradians(angel) / 2) * r;

double angel_alpha = (math.pi - math.toradians(angel)) / 2;

double angel_dalta_width = math.atan((double) src.height / src.width);

double angel_dalta_height = math.atan((double) src.width / src.height);

int len_dalta_width = (int) (len * math.cos(math.pi - angel_alpha

- angel_dalta_width));

int len_dalta_height = (int) (len * math.cos(math.pi - angel_alpha

- angel_dalta_height));

int des_width = src.width + len_dalta_width * 2;

int des_height = src.height + len_dalta_height * 2;

return new rectangle(new dimension(des_width, des_height));

}

/**

* 獲得圖片調整角度

* make by dongxh 2017年11月1日下午3:40:20

* @param imgfile

* @return

*/

public static integer getimgrotateangle(string imgfile){

integer angel = 0;

metadata metadata = null;

try{

if(stringutils.isblank(imgfile))return angel;

file _img_file_ = new file(imgfile);

if(!_img_file_.exists())return angel;

metadata = jpegmetadatareader.readmetadata(_img_file_);

directory directory = metadata.getdirectory(exifdirectory.class);

if(directory != null && directory.containstag(exifdirectory.tag_orientation)){

int orientation = directory.getint(exifdirectory.tag_orientation);

// 原圖片的方向信息

if(6 == orientation ){

//6旋轉90

angel = 90;

}else if( 3 == orientation){

//3旋轉180

angel = 180;

}else if( 8 == orientation){

//8旋轉90

angel = 270;

}

}

}catch(exception e){

e.printstacktrace();

}

return angel;

}

/**

* 調整圖片角度

* make by dongxh 2017年11月1日下午4:31:20

* @param imgfile

*/

public static void rotateimage(string imgfile){

try {

if(stringutils.isblank(imgfile)){

file _img_file_ = new file(imgfile);

if(_img_file_.exists()){

integer angel = getimgrotateangle(imgfile);

if(angel==0)return;

bufferedimage src = imageio.read(_img_file_);

bufferedimage des = rotate(src, angel);

imageio.write(des,"jpg", _img_file_);

}

}

} catch (ioexception e) {

e.printstacktrace();

}

}

public static void main(string[] args)throws exception{

string frompic = "d://88888//img_20171004_122718.jpg";

//rotateimage(file);

integer angel = 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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持萬仟網(wǎng)。

如您對本文有疑問或者有任何想說的,請點擊進行留言回復,萬千網(wǎng)友為您解惑!

總結

以上是生活随笔為你收集整理的java旋转图片并画出_java实现图片角度旋转并获得图片信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天插天天射天天干 | 日韩插插插 | 韩国欧美三级 | 国产精品1024| 久久精品国产亚洲AV高清综合 | 9.1成人看片免费版 日韩经典在线 | 天堂免费在线视频 | 欧美日韩人妻精品一区二区三区 | 国产午夜精品福利视频 | 日韩免费网址 | 亚瑟av| 国产xxxx孕妇 | 九九在线观看视频 | 精品一区李梓熙捆绑 | 日韩一区二区三区高清 | 日韩在线毛片 | 高清一区二区在线 | 黄色一级在线 | 欧美一级黄色片视频 | 91色区| 色呦呦国产精品 | 国产在线观看成人 | 国内精品嫩模av私拍在线观看 | 亚洲午夜国产 | 欧美午夜精品理论片a级按摩 | 日韩一区二区三区免费在线观看 | 亚州av| 欧美成人tv | 日韩成人动漫在线观看 | 国产香蕉在线观看 | 国产又粗又猛又爽又黄av | 一级片一区二区三区 | 久久久久无码精品国产 | 在线视频在线观看 | 欧美混交群体交 | 亚洲三级小视频 | 久久久久97国产 | 99精品欧美一区二区三区综合在线 | 国产国产乱老熟女视频网站97 | 日韩av资源在线观看 | www.欧美精品| 青青草国产在线观看 | 亚洲欧美一区二区三区四区 | 午夜在线观看视频网站 | 欧美色图视频在线 | 亚洲精品一区二区18漫画 | 无码人妻精品一区二区蜜桃色欲 | 加勒比hezyo黑人专区 | 久久久久久九九九九九 | 制服丝袜在线第一页 | 成人黄色在线视频 | 成年人黄色大全 | 久久亚洲成人av | 国产一区二区视频免费 | 99热这里只有精品7 青青草社区 | 成人精品一区二区三区中文字幕 | 成人看片网站 | 51久久| 国产精品一区二区无码免费看片 | 日韩一区二区三区在线观看视频 | 女人18毛片毛片毛片毛片区二 | 久久久久美女 | 国产成人一级 | 日韩大片一区二区 | 色欲AV无码精品一区二区久久 | 精品在线一区二区三区 | 妖精视频一区二区三区 | 色视频一区二区 | 九色网站在线观看 | 免费观看黄色小视频 | 以女性视角写的高h爽文 | 一个人在线观看免费视频www | 亚洲伦理一区二区三区 | 国产黄a三级 | 亚洲精品福利在线观看 | 又欲又污又肉又黄短文 | 亚洲一区二区三区av无码 | 另类亚洲色图 | 草草影院在线观看 | 97国产精品人人爽人人做 | 香蕉久久a毛片 | 91精品久久久久久久久久入口 | 国产精欧美一区二区三区蓝颜男同 | 午夜在线观看视频18 | 高清av一区二区 | 一区二区三区高清在线观看 | 女人喂男人奶水做爰视频 | 欧美精品亚洲精品 | 91最新入口 | 香蕉人妻av久久久久天天 | 欧美精品极品 | 国产色婷婷一区二区 | 成人黄色片视频 | 被各种性器调教到哭vk | 成人a毛片久久免费播放 | 国产激情av在线 | 男女洗澡互摸私密部位视频 | 海量av资源 | 天堂精品一区二区三区 |