java实现微博九宫格图片切分
生活随笔
收集整理的這篇文章主要介紹了
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();}打完收工
這里的問題就在于長方形的圖片切出來也是長方形的,未必好看,但是直接切成正方形的需要考慮截取哪一部分
以下圖為例
原圖為長方形的截圖效果如下
如果依然希望輸出正方型,壓縮圖片效果不好,所以采用直接截取圖片的方式
最終截取了正方形的部分,效果如下
總結
以上是生活随笔為你收集整理的java实现微博九宫格图片切分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习苹果识别——python+ope
- 下一篇: Django之验证码(十七)