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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java实现微博九宫格图片切分

發布時間:2024/1/8 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java实现微博九宫格图片切分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

總看別人微博的九宮格廣告,想想,實現倒是很簡單,應該說簡單到爆了,不過還是手寫實現一下吧


主要思想:

1. 一個待繪制的BufferedImage,長寬都是原圖的1/3

2. 使用graphics,通過偏移量選擇繪制原圖的區域

3. 繪制結束就可以輸出到文件

4. 通過兩層循環,繪制9個位置的全部圖片


說完上圖

原圖



切分后的圖片



代碼也比較簡單,實現起來很!方!便!

File imgfile;Image originimg;BufferedImage image;Graphics g;FileOutputStream out;JPEGImageEncoder encoder;try {// 獲取原始圖片imgfile = new File("input.jpg");originimg = ImageIO.read(imgfile);// 獲取原始圖片的寬和高int width = originimg.getWidth(null);int height = originimg.getHeight(null);for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {// 九宮格,每張圖片大小都為原來的1/3image = new BufferedImage(width / 3, height / 3,BufferedImage.TYPE_INT_RGB);// 創建圖片g = image.createGraphics();// 繪制圖片g.drawImage(originimg, width * -i / 3, height * -j / 3,width, height, null);// 圖片繪制完成,關閉gg.dispose();// 輸出流和輸出文件out = new FileOutputStream("output" + i + "-" + j + ".jpg");// 下面代碼將輸出圖片轉換為JPEG、JPG文件encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(image);out.close();System.out.println("輸出文件output" + i + "-" + j + ".jpg");}}} catch (Exception e) {e.printStackTrace();}
打完收工


這里的問題就在于長方形的圖片切出來也是長方形的,未必好看,但是直接切成正方形的需要考慮截取哪一部分

以下圖為例



原圖為長方形的截圖效果如下




如果依然希望輸出正方型,壓縮圖片效果不好,所以采用直接截取圖片的方式


File imgfile;Image originimg;BufferedImage image;Graphics g;FileOutputStream out;JPEGImageEncoder encoder;try {// 獲取原始圖片imgfile = new File("input3.jpg");originimg = ImageIO.read(imgfile);// 獲取原始圖片的寬和高int width = originimg.getWidth(null);int height = originimg.getHeight(null);// 如果輸入為長方形,重新計算長寬int outputwidth = width > height ? height : width;int outputheight = outputwidth;for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {// 九宮格,每張圖片大小都為原來的1/3// 長方形,新建圖片大小為計算后的正方型的1/3image = new BufferedImage(outputwidth / 3,outputheight / 3, BufferedImage.TYPE_INT_RGB);// 創建圖片g = image.createGraphics();// 繪制圖片// 長方形,計算偏移量的數據采用計算后的正方形g.drawImage(originimg, outputwidth * -i / 3, outputheight* -j / 3, width, height, null);// 圖片繪制完成,關閉gg.dispose();// 輸出流和輸出文件out = new FileOutputStream("output" + i + "-" + j + ".jpg");// 下面代碼將輸出圖片轉換為JPEG、JPG文件encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(image);out.close();System.out.println("輸出文件output" + i + "-" + j + ".jpg");}}} catch (Exception e) {e.printStackTrace();}

最終截取了正方形的部分,效果如下




總結

以上是生活随笔為你收集整理的java实现微博九宫格图片切分的全部內容,希望文章能夠幫你解決所遇到的問題。

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