Creating a Buffered Image from an Image
http://www.exampledepot.com/egs/java.awt.image/Image2Buf.html
An Image object cannot be converted to a BufferedImage object. The closest equivalent is to create a buffered image and then draw the image on the buffered image. This example defines a method that does this.
// This method returns a buffered image with the contents of an image
public static BufferedImage toBufferedImage(Image image) {
if (image instanceof BufferedImage) {
return (BufferedImage)image;
}
// This code ensures that all the pixels in the image are loaded
image = new ImageIcon(image).getImage();
// Determine if the image has transparent pixels; for this method's
// implementation, see e661 Determining If an Image Has Transparent Pixels
boolean hasAlpha = hasAlpha(image);
// Create a buffered image with a format that's compatible with the screen
BufferedImage bimage = null;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
try {
// Determine the type of transparency of the new buffered image
int transparency = Transparency.OPAQUE;
if (hasAlpha) {
transparency = Transparency.BITMASK;
}
// Create the buffered image
GraphicsDevice gs = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gs.getDefaultConfiguration();
bimage = gc.createCompatibleImage(
image.getWidth(null), image.getHeight(null), transparency);
} catch (HeadlessException e) {
// The system does not have a screen
}
if (bimage == null) {
// Create a buffered image using the default color model
int type = BufferedImage.TYPE_INT_RGB;
if (hasAlpha) {
type = BufferedImage.TYPE_INT_ARGB;
}
bimage = new BufferedImage(image.getWidth(null), image.getHeight(null), type);
}
// Copy image to buffered image
Graphics g = bimage.createGraphics();
// Paint the image onto the buffered image
g.drawImage(image, 0, 0, null);
g.dispose();
return bimage;
}
//Determining If an Image Has Transparent Pixels
// This method returns true if the specified image has transparent pixels
public static boolean hasAlpha(Image image) {
// If buffered image, the color model is readily available
if (image instanceof BufferedImage) {
BufferedImage bimage = (BufferedImage)image;
return bimage.getColorModel().hasAlpha();
}
// Use a pixel grabber to retrieve the image's color model;
// grabbing a single pixel is usually sufficient
PixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false);
try {
pg.grabPixels();
} catch (InterruptedException e) {
}
// Get the image's color model
ColorModel cm = pg.getColorModel();
return cm.hasAlpha();
}
分享到:
相关推荐
2. **绘制图像到缓冲区**:接下来,利用`BufferedImage`的`getGraphics()`方法获取一个`Graphics`对象,然后使用该对象的`drawImage()`方法将原始`Image`对象绘制到缓冲图像上。 3. **释放图形资源**:完成绘制后,...
以下是一个简化的示例代码,展示了如何使用Java将`BufferedImage`保存为BMP文件: ```java import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException...
你可以通过指定图像类型(如TYPE_INT_ARGB)来创建一个新的BufferedImage对象,然后使用其提供的方法进行像素级别的操作。 2. **ImageIO类**: `javax.imageio.ImageIO`类是用于读取和写入图像文件的核心类。你...
2. 创建HTML2Image对象:通过调用相关的构造函数创建一个HTML2Image实例,设置必要的参数,如HTML内容、输出图像的宽度和高度等。 3. 转换HTML:使用`generateImage()`或`generateImageToFile()`方法将HTML转换为...
动画中的一个帧被转换结构扩大四倍;分为两个步骤:第一步 提供的BufferedImage传给Java 3D的ImageComponent2D对象,然后传给Java 3D Texture2D. 区域的图像更新非常快:每秒更新25帧,要求结构更新25次.因此结构...
在Java编程中,给面板...此外,你提到的SQL2005和eclipse6.0可能是用于数据存储和开发环境,它们在实现这个功能中并不直接涉及,但对一个完整的应用程序来说,数据库连接和集成开发环境的使用也是不可或缺的部分。
`ImagePanel`接收一个`BufferedImage`对象作为构造函数参数,这个对象就是我们要在窗口中显示的图片。在`paintComponent()`方法中,我们首先调用`super.paintComponent(g)`以确保父类的绘图逻辑得到执行,接着如果...
通过`new Font(String family, int style, int size)`可以创建一个新的字体对象,然后使用`Graphics2D`的`setFont(Font font)`方法来设置当前绘制使用的字体。 4. **文字绘制**: 使用`Graphics2D`的`drawString...
`BufferedImage`是`Image`的一个子类,提供了对像素的直接访问,因此更适合进行图像处理操作,如缩放。它有三个构造函数,可以根据需要创建具有不同颜色模型和样本深度的图像。 4. **缩放方法** 缩放图像通常有两...
提供了两个构造函数,第一个构造函数使用默认的文件名前缀和图片格式,第二个构造函数允许用户自定义文件名前缀和图片格式。 ##### 4. 截图方法 ```java public void snapShot() { try { // 创建一个...
这段代码创建了一个80x25像素的`BufferedImage`对象,设置了白色背景和黑色文本"HelloImage"。然后,它将图像保存为JPEG格式的文件。 生成随机字符串和将其绘制到图像上是验证码的核心部分。我们可以创建一个新的类...
通过`new Robot()`构造函数创建一个`Robot`实例,然后调用它的`createScreenCapture(Dimension dim)`方法,传入屏幕尺寸,即可获取屏幕快照。 4. **保存截图**: 获取到`BufferedImage`对象后,我们可以将其保存为...
- `Redraw(String, String, int, int)`:这个方法读取源文件的`Image`对象,然后创建一个新的`BufferedImage`,指定新的宽度和高度。这个方法中提供了三种不同的图像缩放算法: - `Image.SCALE_SMOOTH`:平滑缩放...
例如,我们可以使用`BufferedImage`类来创建一个新的图像,使用`Graphics2D`类来绘制文本,而`ImageIO`类则用于保存生成的图像到磁盘。 以下是一个简单的JavaBean实现文字转图片的示例: ```java import java.awt....
它接受一个包含像素数据的数组,并通过 `ImageProducer` 接口将这些数据提供给消费者,如 `Canvas` 或 `BufferedImage`。它允许开发者动态地修改图像的像素值,这对于创建动画或者实时更新的图像非常有用。 ### 2. ...
在这个例子中,我们创建了一个`BlindEffect`类,它接受一个`BufferedImage`对象作为构造函数参数。`paintComponent`方法用于绘制百叶窗效果,而定时器则控制百叶窗的打开速度。当用户单击窗口时,百叶窗动画开始。 ...
此外,`Robot`类的一个关键功能是`createScreenCapture()`方法,这个方法能够捕获屏幕的一部分或者整个屏幕的像素数据,并将其复制到一个`BufferedImage`对象中,便于进一步处理或保存为图像文件。 **2. 屏幕截取的...
在`TestNum.java`这个文件中,很可能是实现了一个简单的数字验证码的类。可能的代码结构如下: ```java public class TestNum { private String code; // 验证码字符串 private BufferedImage image; // 验证码...
2. **默认构造器**:至少有一个无参构造器用于实例化对象。 3. **事件处理**:支持事件监听和发布机制,使得组件之间可以进行交互。 **Java生成图片:** Java提供了一些核心库,如`java.awt`和`javax.imageio`,...