明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

使用Delphi的TJPEGImage控件把BMP轉(zhuǎn)化成JPEG

[摘要]在工作過程中我經(jīng)常使用到兩種圖象——網(wǎng)頁上的JPEG圖象和雜志題目的BMP圖象。一般來說我把原始的BMP圖象保存在CD中,然后用Delphi應(yīng)用程序把它們轉(zhuǎn)化成JPEG文件。這篇文章我將介紹如何利用...
在工作過程中我經(jīng)常使用到兩種圖象——網(wǎng)頁上的JPEG圖象和雜志題目的BMP圖象。一般來說我把原始的BMP圖象保存在CD中,然后用Delphi應(yīng)用程序把它們轉(zhuǎn)化成JPEG文件。這篇文章我將介紹如何利用Delphi應(yīng)用程序把BMP圖象轉(zhuǎn)化成JPEG圖象及反之轉(zhuǎn)化。如果要查看圖象格式信息,請(qǐng)點(diǎn)擊 這里.

TJPEGImage

在Delphi 3中,Delphi控件庫中的Timage控件能顯示不同格式的文件,如BMP, ICO, WMF/EMF, and JPEG文件。然后,能夠顯示文件格式并不等于能夠進(jìn)行文件格式之間的轉(zhuǎn)化。Timage控件中的LoadFromFile和SaveToFile事件能保存一個(gè)BMP文件,但如果你保存JPG文件,你也只能采用BMP格式存放。

幸運(yùn)的是,Delphi 3中的TJPEGImage控件能很好地解決了上面的問題,這一控件沒有直接存放在控件庫中,它均以JPEB形式聲明和說明。如果你想找到這一控件的例程源代碼,請(qǐng)點(diǎn)擊Dehphi目錄下的Info\Extras\JPEG路徑(不要告訴我你從沒打開這一目錄,這里有很多好東東)。

TJPEGImage控件從Tgraphic控件引申出來,所以它與Tbitmap控件相兼容,如Listing A如示。你可以利用TJPEGImage控件寫出一個(gè)把BMP轉(zhuǎn)化成JPEG的例子。

注意到Tbitmap使用LoadFromFile事件傳入文件,但是你必需只能利用TJPEGImage的SaveToStream事件保存JPEG圖象到文件,后者沒有如SaveToFile的事件。這一過程包括了文件壓縮質(zhì)量的百分比,缺省值是100%。

例如,我把44,280字節(jié)的Handshak.bmp文件從Common Files\Borland Shared\Images\Splash\256Color目錄下轉(zhuǎn)化為12種JPEG文件,這一過程采用100%,95%,90%,85%,80%,75%,70%,65%,60%,55%,50%,0%的壓縮質(zhì)量百分比,如Table A所示。在50%下,圖象不再有很好的質(zhì)量。100%壓縮質(zhì)量比結(jié)果是文件變大。事實(shí)上,當(dāng)我采用75%以上的壓縮質(zhì)量百分比時(shí),圖象都保持很好的效果。

Compression quality percentage
Resulting JPEG file size

100%
57,477

95%
32,247

90%
23,037

85%
18,325

80%
15,489

75%
13,551

70%
12,190

65%
11,129

60%
10,257

55%
9,562

50%
8,960

0%
1,813


從JPEG轉(zhuǎn)化為BMP
把JPEG圖象轉(zhuǎn)化為BMP圖象能夠節(jié)省很大的存儲(chǔ)空間,但是這一過程要丟失一些圖象性質(zhì)。在很多情況下人們都是存儲(chǔ)BMP文件而不是JPEG文件。

幸運(yùn)的是,從JPEG轉(zhuǎn)化到BMP是非常的容易,你無需使用壓縮質(zhì)量的方式。但是你應(yīng)該記住,BMP文件是不能壓縮的,所認(rèn)BMP的壓縮設(shè)置對(duì)最后的文件大小沒有任何的影響。

Delphi JPG2BMP工程的源代碼位于Listing B。這一程序演示了以上所說的內(nèi)容。

非常容易地轉(zhuǎn)化
這里的代碼片段演示了如何轉(zhuǎn)化BMP到JPEG及如何返之轉(zhuǎn)化。即使你還關(guān)注轉(zhuǎn)化的質(zhì)量和文件大小,Delphi的TJPEGImage控件也能讓你很容易地完成這一操作。