目錄
1.實現
場景:本地存在要處理的圖像,嘗試截取圖像的一部分內容另行存儲
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
/**
* 實現截取已存在圖片的一部分
* <br>本例子爲從原圖的0.2倍寬和高處開始截取
* <br>提示:截取的起點結合截取長度和高度不應超過原圖所在的座標範圍
* @author yangcongcong
*
*/
public class DrawPic {
public static void main(String[] args) {
//原圖片
String soursePicPath = "D:/File/javaPic.png";
File sourcePic = new File(soursePicPath);
try {
BufferedImage pic1 = ImageIO.read(sourcePic);
int width = pic1.getWidth();
int height = pic1.getHeight();
//參數依次爲,截取起點的x座標,y座標,截取寬度,截取高度
BufferedImage pic2 = pic1.getSubimage(width/5, height/5, width-width/5, height-height/5);
//將截取的子圖另行存儲
File desImage = new File("D:/File/subjavaPic.png");
ImageIO.write(pic2, "png", desImage);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
效果圖示例:依次爲原圖和截取後的結果圖
原圖
結果圖
2.在截圖過程中對參數設置不正確程序運行會產生異常
例如:
//截圖起點的x座標設置不正確
BufferedImage pic2 = pic1.getSubimage(width+1, height/5, width-width/5, height-height/5);
會產生如下異常:
圖片的座標系如下:
設置參數時,不能超過原圖片的座標範圍。
3.補充,如何生成一張空白圖片
BufferedImage bi = new BufferedImage(200, 200, BufferedImage.TYPE_INT_BGR);
//要生成的空白圖片的路徑
final File file = new File("D:/File/javaPic000.png");
try {
if(file.exists()) {
file.delete();
file.createNewFile();
}
}catch(IOException e) {
e.printStackTrace();
}
Graphics g = bi.getGraphics();
//將圖片設置爲白色圖片
Color color = new Color(255,255,255);
g.setColor(color);
g.fillRect(0, 0, bi.getWidth(), bi.getHeight());
////可以接着進行塗畫
//g.setColor(new Color(66, 37, 188));
//g.drawLine(0, 100, 100, 100);
g.dispose();
try {
ImageIO.write(bi, picType, file);
} catch (IOException e) {
e.printStackTrace();
}
4.參考
http://www.voidcn.com/article/p-yuvqgefh-btn.html java圖像裁剪
https://blog.csdn.net/xing8831925/article/details/88950513 java 創建新的圖片,底色自己設定
https://blog.csdn.net/zhouyingge1104/article/details/80995845 Java創建圖片並繪圖