程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> Java應用程序中創建圖像

Java應用程序中創建圖像

編輯:JAVA編程入門知識

  合成圖像

  您不必從文件中讀取所有的圖像 — 您可以創建自己的圖像。要創建自己的圖像,最靈活的方法是用一個 BufferedImage 對象,它是 Image 類的一個子類,它把圖像數據存儲在一個可以被訪問的緩沖區中。它還支持各種存儲像素數據的方法:使用或不使用 alpha 通道、不同種類的顏色模型以及顏色組件的各種精確度。ColorModel 類提供一種靈活的方法定義各種顏色模型,以和 BufferedImage 對象一起使用。為了理解顏色模型工作的基本知識,我們將只使用一個缺省的顏色模型,其顏色組件由 RGB 值和一個緩沖類型(存儲 8 位的 RGB 顏色值加上一個 alpha 通道)組成。這一緩沖類型由 BufferedImage 類中的常量 TYPE_INT_ARGB 指定,它意味著每個像素要用一個 int 值。每個像素的值是以 8 位字節形式存儲一個 alpha 組件加上 RGB 顏色組件。我們可以用給定的寬度和高度創建一個這種類型的 BufferedImage 對象,代碼語句如下:

  int width = 200;
  int height = 300;
  BufferedImage image = new BufferedImage(width,
  height,BufferedImage.TYPE_INT_ARGB);

  這段代碼創建了一個 BufferedImage 對象,它代表一個 200 像素寬、300 像素高的圖像。為了應用這個圖像,我們需要有圖形上下文,而 BufferedImage 對象的 createGraphics() 方法就返回一個與該圖像相關的 Graphics2D 對象:

  int width = 200;
  Graphics2D g2D = image.createGraphics();

  使用 g2D 對象的操作會修改 BufferedImage 對象 image 的像素。利用這個對象,您現在完全有能力應用 BufferedImage 對象。您可以繪制形狀、圖像、GeneralPath 對象或任何別的東西,還可以為圖形上下文設置 alpha 組合對象。您同時還擁有 Graphics2D 對象提供的全部仿射變形能力。

  如果要從 BufferedImage 對象獲取單個像素,可以通過調用它的 getRGB() 方法,並提供該像素的 x,y 坐標作為 int 類型的參數。這個像素會按 TYPE_INT_ARGB 格式以 int 類型返回,它由四個 8 位的值(代表 alpha 值和 RGB 顏色組件)組成一個 32 位字。同時 getRGB() 還有一個重載的版本,它從一部分圖像數據中返回一個像素數組。您也可以通過調用 setRGB() 方法來設置單個像素。前兩個參數是該像素的坐標值,第三個參數是待設定的值,類型為 int。這個方法也有一個版本可以設置像素數組的值。

  至此我們已經完成了像素操作的學習。下面我們要建立一個 applet,它在 Wrox 徽標背景上使 BufferedImage 對象具有動畫效果。我們的示例還將演示怎樣能讓圖像局部透明。applet 的基本內容如下所示:

  import java.awt.*;
  import java.awt.image.*;
  import java.awt.geom.*;
  import javax.swing.*;

  public class ImageDrawDemo extends JApplet
  {
  // The init() method to initialize everything...
  // The start() method to start the animation...
  // The stop() method to stop the animation...
  // The ImagePanel class defining the panel displaying the animation...
  // Data members for the applet...
  }

  • 首頁
  • 上一頁
  • 1
  • 2
  • 3
  • 下一頁
  • 尾頁
  • 共3頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved