我尝试了很多方法在小程序中将 Image 类的图像转换为 BufferedImage。我得到了一种方法,该方法在从 netbeans 运行时工作正常,但在通过浏览器运行时相同的代码无法工作。我尝试过的代码是
ImageIcon icon = new ImageIcon(orgImage);
BufferedImage buffer = ((ToolkitImage) icon.getImage()).getBufferedImage();
还尝试了以下方法
1) BufferedImage buffer = ((ToolkitImage) orgImage).getBufferedImage();
2) BufferedImage buffer = new BufferedImage(
orgImage.getWidth(null), orgImage.getWidth(null), BufferedImage.TYPE_INT_RGB);
buffer.getGraphics().drawImage(orgImage, 0, 0, null);
orgImage 是彩色图像。
在所有这些情况下缓冲区均为空..
我的问题的解决方案是什么?
最佳答案
要将图像转换为缓冲图像,您可以使用以下函数:
/**
* Converts a given Image into a BufferedImage
*
* @param img The Image to be converted
* @return The converted BufferedImage
*/
public BufferedImage toBufferedImage(Image img){
if (img instanceof BufferedImage) {
return (BufferedImage) img;
}
// Create a buffered image with transparency
BufferedImage bimage = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
// Draw the image on to the buffered image
Graphics2D bGr = bimage.createGraphics();
bGr.drawImage(img, 0, 0, null);
bGr.dispose();
// Return the buffered image
return bimage;
}
将其粘贴到类中的任意位置并使用以下代码:
BufferedImage bi = toBufferedImage(orgImage);
~问候麦克斯
关于java - 在小程序中将图像转换为缓冲图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602972/