国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

用 Java 保存位圖文件(轉)

2019-11-18 13:38:26
字體:
來源:轉載
供稿:網(wǎng)友
java 保存位圖文件
教程 -- 其中包括將圖像對象寫入位圖文件的全部代碼


作者 Jean-Pierre Dubé
摘要
雖然 Java 提供了幾種打開圖像的機制,但保存圖像并不是它的強項。這篇技巧將講述如何將圖像保存在 24 位位圖文件中。另外,Jean-Pierre 還提供了將圖像文件寫入位圖文件所需的全部代碼。
這篇技巧是 Java 技巧 43 的補充,那篇技巧說明了在 Java 應用程序中加載位圖文件的過程。本月我再提供一篇教程,說明如何將圖像保存在 24 位位圖文件中,其中還包含將圖像對象寫入位圖文件的代碼片斷。
假如您在 Microsoft Windows 環(huán)境中工作,那么創(chuàng)建位圖文件的功能將為您提供許多方便。例如,在我的上一個項目中,我必須將 Java 與 Microsoft access 對接。Java 程序答應用戶在屏幕上繪圖。這幅圖隨后被打印到 Microsoft Access 報表中。由于 Java 不支持 OLE,我的唯一選擇就是創(chuàng)建該圖的一個位圖文件,并通知 Microsoft Access 報表在何處能找到這個位圖文件。假如您寫過向剪貼板發(fā)送圖像的應用程序,則這個技巧可能對您有用 -- 尤其是當您將這個信息傳遞給另一個應用程序時。
位圖文件的格式
位圖文件格式支持 4 位 RLE(行程長度編碼)以及 8 位和 24 位編碼。因為我們只處理 24 位格式,所以下面我們查看一下該文件的結構。
位圖文件分為三個部分。我已將它們列在下面。
第 1 部分:位圖文件的標頭
標頭包含位圖文件的類型大小信息和版面信息。結構如下(摘自 C 語言結構定義):
typedef strUCt tagBITMAPFILEHEADER {
   UINT bfType;
   DWord bfSize;
   UINT bfReserved1;
   UINT bfReserved2;
   Dword bfOffBits;
}BITMAPFILEHEADER;

下面是對這個清單中的代碼元素的說明:
  • bfType:指定文件類型,其值始終為 BM。
  • bfSize:指定整個文件的大小(以字節(jié)為單位)。
  • bfReserved1:保留 -- 必須為 0。
  • bfReserved2:保留 -- 必須為 0。
  • bfOffBits:指定從 BitmapFileHeader 到圖像首部的字節(jié)偏移量。

現(xiàn)在您已經(jīng)明白位圖標頭的用途就是標識位圖文件。讀取位圖文件的每個程序都使用位圖標頭來進行文件驗證。
第 2 部分:位圖信息標頭
隨后的標頭稱為信息標頭,其中包含圖像本身的屬性。
下面說明如何指定 Windows 3.0(或更高版本)設備獨立位圖 (DIB) 的大小和顏色格式:
typedef struct tagBITMAPINFOHEADER {
    Dword biSize;
    LONG biWidth;
    LONG biHeight;
    word biplanes;
    word biBitCount;
    Dword biComPRession;
    Dword biSizeImage;
    LONG biXPelsPerMeter;
    LONG biYPelsPerMeter;
    Dword biClrUsed;
    Dword biClrImportant;
} BITMAPINFOHEADER;

以上代碼清單的每個元素說明如下:
  • biSize:指定 BITMAPINFOHEADER 結構所需的字節(jié)數(shù)。
  • biWidth:指定位圖的寬度(以象素為單位)。
  • biHeight:指定位圖的高度(以象素為單位)。
  • biPlanes:指定目標設備的位面數(shù)。這個成員變量的值必須為 1。
  • biBitCount:指定每個象素的位數(shù)。其值必須為 1、4、8 或 24。
  • biCompression:指定壓縮位圖的壓縮類型。在 24 位格式中,該變量被設置為 0。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 崇文区| 合江县| 宝坻区| 浙江省| 岐山县| 金秀| 诸暨市| 论坛| 佳木斯市| 大安市| 应城市| 吐鲁番市| 登封市| 濮阳县| 山丹县| 巧家县| 甘德县| 太白县| 桦甸市| 苏尼特左旗| 民勤县| 武定县| 祁阳县| 新河县| 淮滨县| 霍城县| 广东省| 迭部县| 大洼县| 小金县| 景宁| 万山特区| 松原市| 孟村| 女性| 哈尔滨市| 新龙县| 平湖市| 腾冲县| 建湖县| 扬中市|