java实现微博九宫格图片切分
生活随笔
收集整理的這篇文章主要介紹了
java实现微博九宫格图片切分
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
總看別人微博的九宮格廣告,想想,實(shí)現(xiàn)倒是很簡(jiǎn)單,應(yīng)該說(shuō)簡(jiǎn)單到爆了,不過(guò)還是手寫(xiě)實(shí)現(xiàn)一下吧
主要思想:
1. 一個(gè)待繪制的BufferedImage,長(zhǎng)寬都是原圖的1/3
2. 使用graphics,通過(guò)偏移量選擇繪制原圖的區(qū)域
3. 繪制結(jié)束就可以輸出到文件
4. 通過(guò)兩層循環(huán),繪制9個(gè)位置的全部圖片
說(shuō)完上圖
原圖
切分后的圖片
代碼也比較簡(jiǎn)單,實(shí)現(xiàn)起來(lái)很!方!便!
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++) {// 九宮格,每張圖片大小都為原來(lái)的1/3image = new BufferedImage(width / 3, height / 3,BufferedImage.TYPE_INT_RGB);// 創(chuàng)建圖片g = image.createGraphics();// 繪制圖片g.drawImage(originimg, width * -i / 3, height * -j / 3,width, height, null);// 圖片繪制完成,關(guān)閉gg.dispose();// 輸出流和輸出文件out = new FileOutputStream("output" + i + "-" + j + ".jpg");// 下面代碼將輸出圖片轉(zhuǎn)換為JPEG、JPG文件encoder = JPEGCodec.createJPEGEncoder(out);encoder.encode(image);out.close();System.out.println("輸出文件output" + i + "-" + j + ".jpg");}}} catch (Exception e) {e.printStackTrace();}打完收工
這里的問(wèn)題就在于長(zhǎng)方形的圖片切出來(lái)也是長(zhǎng)方形的,未必好看,但是直接切成正方形的需要考慮截取哪一部分
以下圖為例
原圖為長(zhǎng)方形的截圖效果如下
如果依然希望輸出正方型,壓縮圖片效果不好,所以采用直接截取圖片的方式
最終截取了正方形的部分,效果如下
總結(jié)
以上是生活随笔為你收集整理的java实现微博九宫格图片切分的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 机器学习苹果识别——python+ope
- 下一篇: preLaunchTask“C/C++: