`
xuanzhangyang
  • 浏览: 5283 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java中BufferedImage的作用

阅读更多

        许多人在制作窗体背景时,就只是获取窗体的画布g,然后就开始调用画布的drawImage()方法画上背景,其实这在画静态背景时是可以用的,但在画动态背景时是不可取的,那么应该怎么做呢,这里先贴上代码再说明

//创建一个图片缓冲区,先将图片画到缓冲区上
BufferedImage imageBuffer =
 new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);

ImageIcon icon = new ImageIcon("images/1.jpg");
//图片缓冲区的画布
Graphics gg = imageBuffer.getGraphics();
		
gg.drawImage(icon.getImage(),0,0,icon.getIconWidth(),icon.getIconHeight(),0,0,icon.getIconWidth(),icon.getIconHeight(),null);
		
//将图片缓冲区中的图片画到窗体上,方能显示出来
g.drawImage(imageBuffer,0, 0, null);

      先讲一下这段代码所用到的思想:

     创建一个BufferedImage,BufferedImage是一个图片缓冲区,在这里你可以将它看作一个自由的画布,先往这个自由的画布上画上你想画的东西,然后再将这个自由的画布当作一幅画,整个画到窗体上。那么这种思想有什么好处呢?答案应该是显而易见的,当你经常改变要画的东西时,只在图片缓冲区中该变即可,将所有的该变完成后再显视到窗体上,这样窗体上的动画就不会因为一步一步刷新而闪烁了,这种用中间量的方法是编程中很重要的一种思想。

     下面简介一下画布的drawImage方法的一个用法:

<!-- Generated by javadoc (build 1.6.0-beta2) on Mon Mar 19 18:18:02 CST 2007 -->

<noscript></noscript>
public abstract boolean drawImage(Image img,
                                  int dx1,
                                  int dy1,
                                  int dx2,
                                  int dy2,
                                  int sx1,
                                  int sy1,
                                  int sx2,
                                  int sy2,
                                  ImageObserver observer)
绘制当前可用的指定图像的指定区域,动态地缩放图像使其符合目标绘制表面的指定区域。透明像素不影响该处已存在的像素。
参数:
img - 要绘制的指定图像。如果 img 为 null,则此方法不执行任何操作。
dx1 - 目标矩形第一个角的 x 坐标。
dy1 - 目标矩形第一个角的 y 坐标。
dx2 - 目标矩形第二个角的 x 坐标。
dy2 - 目标矩形第二个角的 y 坐标。
sx1 - 源矩形第一个角的 x 坐标。
sy1 - 源矩形第一个角的 y 坐标。
sx2 - 源矩形第二个角的 x 坐标。
sy2 - 源矩形第二个角的 y 坐标。
observer - 当缩放并转换了更多图像时要通知的对象。

API上讲的这些也不一定能看的懂,其实这个方法就是将一个矩形{(dx1,dy1),(dx2,dy2)}缩小或放大到{(sx1,sy1),(sx2,sy2)}这么大。

分享到:
评论

相关推荐

    Java Image转BufferedImage

    `Image`和`BufferedImage`是Java AWT(Abstract Window Toolkit)和Swing库中的两个重要类,它们分别用于处理图像的不同方面。本篇文章将详细探讨如何将`Image`对象转换为`BufferedImage`,以及这样做的原因和好处。...

    java opencv BufferedImage与Mat互相转换.rar_OpenCV_Java_

    `BufferedImage`是Java AWT(Abstract Window Toolkit)库的一部分,用于在Java应用程序中表示和操作图像。这两个类在处理图像时各有优势,因此在不同的场景下,可能需要将一个转换为另一个。 **1. `Mat`到`...

    IplImage 与BufferedImage互相转换

    public static BufferedImage iplToBufImgData(IplImage ipl,BufferedImage image ) public static IplImage BufImgToIplData(IplImage ipl,BufferedImage bi)

    java图片旋转

    AWT中的`java.awt.image.BufferedImage`类是用于处理图像的核心类,而Swing虽然构建在AWT之上,但提供了更丰富的组件和高级特性。 2. **BufferedImage 类** `BufferedImage`类代表内存中的图像,它允许我们对图像...

    java 处理图像的明暗度

    在Java 2D API中,我们可以使用`BufferedImage`类来读取和操作图像。`BufferedImage`对象有一个`getRGB(x, y)`方法,用于获取图像中某个位置的像素值,以及一个`setRGB(x, y, pixel)`方法,用于设置该位置的像素值。...

    java中如何使用BufferedImage判断图像通道顺序并转RGB/BGR

    Java中使用BufferedImage判断图像通道顺序并转RGB/BGR 在Java中,使用BufferedImage处理图像时,需要判断图像的通道顺序,判断图像是否为RGB或BGR格式,并对其进行相应的转换。本文将详细介绍如何使用BufferedImage...

    java中ImageReader和BufferedImage获取图片尺寸实例

    Java 中 ImageReader 和 BufferedImage 获取图片尺寸实例 Java 中获取图片尺寸有多种方法,其中使用 ImageReader 和 BufferedImage 是两种常见的方法。本文将对这两种方法进行详细介绍,并提供相应的代码实现。 ...

    java内存泄漏解决

    在Java开发过程中,经常会遇到内存泄漏的问题,尤其是在长时间运行的应用程序中更为常见。本文将详细介绍如何解决Java内存泄漏问题,帮助开发者更好地理解和应对这一挑战。 #### 二、Java内存模型与内存区域 Java...

    java中使用点阵字库demo源代码

    2. **位图和像素操作**:点阵字库实质上是一种位图,Java中的BufferedImage类可以用来创建和操作位图。通过getRGB()和setRGB()方法,我们可以读取和设置图像中的每一个像素点,从而构建点阵字形。 3. **自定义字体...

    利用Java程序把多张图片合成一张图片

    在Java中,`BufferedImage`类用于存储和处理图像,而`ImageIO`类则用于读取和写入图像文件。`File`类用于处理文件路径。 接下来,我们创建一个方法来读取图片并将其转换为`BufferedImage`对象: ```java public ...

    java 图像处理(模糊处理、锐化处理)

    在Java编程语言中,图像处理是一项重要的功能,可以用于创建、编辑或操作图像。本教程将探讨两个关键的图像处理技术:模糊处理和锐化处理。这些技术在图像分析、图像增强以及艺术创作中有着广泛的应用。 模糊处理是...

    通过BufferedImage实现将几张图片合成一张图片,图片效果类型为依次排列图片

    在Java编程语言中,`BufferedImage`类是用于创建和操作图像的重要工具。这个类提供了丰富的功能,包括读取、写入、绘制和修改图像。在这个特定的场景中,我们利用`BufferedImage`来实现一个有趣的功能:将四张图片...

    java实现的图片防篡改功能

    在这个项目中,我们主要探讨如何利用Java实现图片的防篡改功能,通过生成图片的唯一标识(哈希值)并进行比对来检测图片是否被篡改。 1. **哈希算法**: 哈希(Hash)函数是一种将任意长度的数据映射为固定长度...

    java 将图片进行180度旋转

    `BufferedImage`是Java中的一个类,用于存储和操作图像。你可以通过`ImageIO.read()`方法读取一个图像文件到`BufferedImage`对象中。 3. **Graphics2D 对象**: `Graphics2D`是从`Graphics`派生的类,支持更多的...

    java生产文字图片(消除线段的锯齿状边缘)

    在Java编程语言中,生成文字图片并消除线段锯齿状边缘是一项常见的需求,尤其是在创建图形用户界面(GUI)或进行图像处理时。这个过程通常涉及到二维图形渲染和字体渲染技术。下面我们将深入探讨如何在Java中实现这...

    将BufferedImage保存为BMP格式的文件

    从给定的文件信息来看,我们正在探讨如何使用Java中的`BufferedImage`类来保存图像为BMP(Bitmap)格式的文件。BMP是一种位图文件格式,它以未压缩的形式存储图像数据,使得每像素的颜色信息都能完整无损地保留下来...

    java 使用ImageIO.writer从BufferedImage生成jpeg图像遇到问题总结及解决

    在Java中,将BufferedImage对象转换为JPEG图像时,常遇到的问题及解决方法如下所述: 首先,早期的Java实现中,一个简便的方法是通过sun的JPEGImageEncoder类来实现BufferedImage到JPEG的转换。该类非标准Java API...

    java中的图片处理

    在Java编程语言中,图片处理是一项常见的任务,涵盖了读取、显示、编辑和保存图像等操作。本篇文章将深入探讨Java中的图片处理技术,并通过一个名为`ImageUtil.java`的工具类来展示如何实现这些功能。 首先,Java...

    Java+PDF批量压缩图片格式的PDF档(源码Demo)

    Java批量压缩图片格式的PDF档(源码Demo) 适用:仅针对纯图片型的pdf(类似扫描版)进行压缩 原理:压缩图片然后再另存成新文件 实例如下: ├── META-INF │ └── MANIFEST.MF ├── pom.xml └── src ├...

    Java代码实现调用RapidOCR(基于PaddleOCR),适配Mac、Win、Linux,支持最新PP-OCRv4

    在本项目中,我们主要关注的是如何在Java环境中利用RapidOCR进行文本识别,这是一个基于PaddleOCR的高效OCR(Optical Character Recognition)工具。PaddleOCR是百度开发的开源OCR框架,它提供了多种OCR模型,包括...

Global site tag (gtag.js) - Google Analytics