我想在java中剪切圖像的特定形狀,例如包含一個白色背景的人的圖像,在這裏我想剪裁沒有背景的人。不想讓它成爲透明圖像,想用一些座標剪切。我認爲使用cropImageFilter我們只能切割矩形區域。任何人都可以告訴我如何做到這一點?java中的圖像裁剪
1
A
回答
0
首先,您需要從java.awt.Image創建一個java.awt.image.BufferedImage。這裏有一些代碼,從DZone Snippets。
/**
* @author Anthony Eden
*/
public class BufferedImageBuilder {
private static final int DEFAULT_IMAGE_TYPE = BufferedImage.TYPE_INT_RGB;
public BufferedImage bufferImage(Image image) {
return bufferImage(image, DEFAULT_IMAGE_TYPE);
}
public BufferedImage bufferImage(Image image, int type) {
BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
Graphics2D g = bufferedImage.createGraphics();
g.drawImage(image, null, null);
waitForImage(bufferedImage);
return bufferedImage;
}
private void waitForImage(BufferedImage bufferedImage) {
final ImageLoadStatus imageLoadStatus = new ImageLoadStatus();
bufferedImage.getHeight(new ImageObserver() {
public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
if (infoflags == ALLBITS) {
imageLoadStatus.heightDone = true;
return true;
}
return false;
}
});
bufferedImage.getWidth(new ImageObserver() {
public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
if (infoflags == ALLBITS) {
imageLoadStatus.widthDone = true;
return true;
}
return false;
}
});
while (!imageLoadStatus.widthDone && !imageLoadStatus.heightDone) {
try {
Thread.sleep(300);
} catch (InterruptedException e) {
}
}
}
class ImageLoadStatus {
public boolean widthDone = false;
public boolean heightDone = false;
}
}
現在,你有一個BufferedImage,你可以使用你必須把不屬於男人,透明的像素座標是多邊形。只需使用BufferedImage中提供的方法即可。
您無法從BufferedImage逐字切割多邊形。一個BufferedImage必須是一個矩形。你可以做的最好的做法是讓你不想透明的圖像部分。或者,您可以將您想要的像素放在另一個矩形BufferedImage上。
0
我不確定,但類Graphics2D有一個方法clip()接受一個多邊形,我認爲你需要做什麼。
所以從圖像中創建一個BufferedImage,並獲得與createGraphics()
相關問題
- 1. 在Java中裁剪圖像
- 2. 在Java中裁剪圖像
- 3. WinRT中的裁剪/裁剪圖像
- 4. 使用Java裁剪圖像
- 5. 在Java中裁剪圖像的類?
- 6. 裁剪圖像
- 7. 裁剪圖像
- 8. 裁剪圖像
- 9. 如何在Java中裁剪圖像?
- 10. android中的圖像裁剪
- 11. c中的裁剪圖像#
- 12. 裁剪圖像的中心
- 13. Emgu.CV中的裁剪圖像
- 14. R中的裁剪圖像
- 15. 無法剪裁/裁剪圖像
- 16. 圖像裁剪AVCaptureSession圖像
- 17. 笨裁剪圖像
- 18. 圖像裁剪c#
- 19. Itext7 - 裁剪圖像
- 20. WPF圖像裁剪
- 21. html5圖像裁剪
- 22. Silverlight圖像裁剪
- 23. 裁剪YUV圖像
- 24. WPF圖像裁剪
- 25. 圖像裁剪PHP
- 26. 裁剪android圖像
- 27. PHP - 裁剪圖像
- 28. GWT圖像裁剪
- 29. 在android中裁剪圖像
- 30. 在Matlab中裁剪圖像
所以,你要準確地切出的人Graphics2D對象,根據人的形狀?你意識到這不是一項微不足道的任務嗎?計算機很難識別圖像中的東西。標準Java庫中肯定沒有簡單的API。 – Jesper 2010-06-23 06:57:40
嗨,Jesper,感謝您的回覆,我與我協調,即我有多邊形點(座標)來削減人的形狀。有了這個我們可以做任何事嗎? – SWDeveloper 2010-06-23 07:13:16