程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi實現圖片格式轉換程序代碼

Delphi實現圖片格式轉換程序代碼

編輯:Delphi

Delphi實現圖片格式轉換程序代碼,因為圖像是由像素組成的,一幅彩色圖像包含了許多個像素,每個像素都包含三原色R、G、B,如果將單一的灰色賦值給彩色圖像的各個像素,彩色圖像就變成了灰色的黑白圖像。我們自定義一個函數Convert2Gray(Cnv: TCanvas)來實現這一轉換的算法,相關代碼如下:

procedure Convert2Gray(Cnv: TCanvas);//定義彩色圖像轉換為灰度的算法
var X, Y: Integer;
Color: LongInt;
R, G, B, Gr : Byte;
begin
with Cnv do
for X := Cliprect.Left to Cliprect.Right do
//從圖像的左邊到右邊執行轉換
for Y := Cliprect.Top to Cliprect.Bottom do
//從圖像的上部到底部執行轉換
begin
Color := ColorToRGB(Pixels[X, Y]);//將每一像素的R,G,B 值儲存在長整數中
B := (Color and $FF0000) shr 16; //分解這個長整數得到R,G,B 值
G := (Color and $FF00) shr 8;
R := (Color and $FF);
Gr := HiByte(R * 77 + G * 151 + B * 28);
Pixels[X, Y] := RGB(Gr, Gr, Gr);//將灰色賦給相對應的像素
end;
end;
function RGB(R, G, B: Byte): TColor;//定義顏色轉換的算法
begin
Result := B shl 16 or G shl 8 or R;
end;
procedure TForm1.Button1Click(Sender: TObject);
//彩色圖像轉換成灰色圖像
begin
Screen.Cursor := crHourGlass;
Convert2Gray(Image1.Picture.Bitmap.Canvas);
Screen.Cursor := crDefault;
end;

(2)點擊“打開圖像”按鈕,可以導入需要的圖像文件,同時程序根據導入的圖像格式是BMP 還是JPG,來控制BMP 和JPG 格式轉換的按鈕的激活性,相關代碼如下:

procedure TForm1.Button3Click(Sender: TObject);
begin
Form1.OpenPictureDialog1.Title:=’請選擇一個圖像文件打開(*.bmp 或*.jpg)’;
Form1.OpenPictureDialog1.InitialDir:=’C:\My Documents\My Pictures’;
if Form1.OpenPictureDialog1.Execute then
Form1.Image1.Picture.LoadFromFile(Form1.OpenPicturedialog1.FileName);
//導入圖像文件
if uppercase(extractfileext(Form1.openpicturedialog1.FileName))=’.JPG’ then
//判斷導入的圖像文件是否為JPG 格式
begin
Form1.Button5.Enabled:=true;//激活JPG 格式轉換成BMP 按鈕
end
else if
uppercase(extractfileext(Form1.openpicturedialog1.FileName))=’.BMP’ then //判
斷導入的圖像文件是否為BMP 格式
begin
Form1.Button4.Enabled:=true;
//激活BMP 格式轉換成Jpg 按鈕
end;
end;

(3)BMP 和JPG 圖像進行格式轉換時,需要先定義兩個變量,來存儲圖像對象,轉換後,調用保存對話框保存轉換後的圖像文件,同時釋放圖像變量:

procedure TForm1.Button4Click(Sender: TObject);
begin
Form1.SavePictureDialog1.DefaulText:=’jpg’;
//設置缺省文件擴展名
i:=Tbitmap.Create;
j:=TjpegImage.Create;
//創建兩個圖像對象
i.LoadFromFile(Form1.openpicturedialog1.FileName);
j.assign(i);
if Form1.Savepicturedialog1.execute then
j.Savetofile(Form1.savepicturedialog1.FileName);
//存儲圖像文件
i.free;
j.free;
//釋放定義的變量
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Form1.SavePictureDialog1.DefaulText:=’bmp’;
//設置缺省文件擴展名
i:=Tbitmap.Create;
j:=TjpegImage.Create;
//創建兩個圖像對象
j.LoadFromFile(Form1.openpicturedialog1.FileName);
i.assign(j);
if Form1.Savepicturedialog1.execute then
j.Savetofile(Form1.savepicturedialog1.FileName);
//存儲圖像文件
j.free;
i.free;
//釋放定義的變量
end;

 Delphi圖像格式轉換程序完整代碼:

vIEw source print? 001 unit Unit1; 002 interface 003 uses 004 Windows, WinProcs, Messages, Classes, Graphics, Controls, 005 Forms, Dialogs, StdCtrls, ExtCtrls, jpeg, ExtDlgs,SysUtils; 006 type 007 TForm1 = class(TForm) 008 Button1: TButton; 009 Panel1: TPanel; 010 Image1: TImage; 011 Button2: TButton; 012 Button3: TButton; 013 Button4: TButton; 014 Button5: TButton; 015 SavePictureDialog1: TSavePictureDialog; 016 OpenPictureDialog1: TOpenPictureDialog; 017 procedure Button1Click(Sender: TObject); 018 procedure Button2Click(Sender: TObject); 019 procedure FormCreate(Sender: TObject); 020 procedure Button3Click(Sender: TObject); 021 procedure Button4Click(Sender: TObject); 022 procedure Button5Click(Sender: TObject); 023 private 024 { Private-Deklarationen } 025 public 026 { Public-Deklarationen } 027 end; 028 var 029 Form1: TForm1; 030 i:Tbitmap; 031 j:TjpegImage; 032 implementation 033 {$R *.DFM} 034 procedure Convert2Gray(Cnv: TCanvas);//定義彩色圖像轉換為灰色的算法 035 var X, Y: Integer; 036 Color: LongInt; 037 R, G, B, Gr : Byte; 038 begin 039 with Cnv do 040 for X := Cliprect.Left to Cliprect.Right do 041 //從圖像的左邊到右邊執行轉換 042 for Y := Cliprect.Top to Cliprect.Bottom do 043 //從圖像的上部到底部執行轉換 044 begin 045 Color := ColorToRGB(Pixels[X, Y]);//將每一像素的R,G,B 值儲存在長整數中 046 B := (Color and $FF0000shr 16//分解這個長整數得到R,G,B 值 047 G := (Color and $FF00shr 8; 048 R := (Color and $FF); 049 Gr := HiByte(R * 77 + G * 151 + B * 28); 050 Pixels[X, Y] := RGB(Gr, Gr, Gr);//將灰色賦給相對應的像素 051 end; 052 end; 053 function RGB(R, G, B: Byte): TColor;//定義顏色轉換的算法 054 begin 055 Result := B shl 16 or shl 8 or R; 056 end; 057 procedure TForm1.Button1Click(Sender: TObject); 058 //彩色圖像轉換成灰色圖像 059 begin 060 Screen.Cursor := crHourGlass; 061 Convert2Gray(Image1.Picture.Bitmap.Canvas); 062 Screen.Cursor := crDefault; 063 end; 064 procedure TForm1.Button2Click(Sender: TObject); 065 begin 066 close; 067 end; 068 procedure TForm1.FormCreate(Sender: TObject); 069 begin 070 Form1.OpenPictureDialog1.Title:=’請選擇一個圖像文件打開(*.bmp 或*.jpg)’; 071 Form1.OpenPictureDialog1.InitialDir:=’C:\My Documents\My Pictures’; 072 Form1.SavePictureDialog1.Title:=’保存轉換後的圖像文件’; 073 Form1.SavePictureDialog1.InitialDir:=’C:\My Documents\My Pictures’; 074 Button4.Enabled:=False;//使圖像格式的轉換按鈕不可用 075 Button5.Enabled:=False; 076 end; 077 procedure TForm1.Button3Click(Sender: TObject); 078 begin 079 Form1.OpenPictureDialog1.Title:=’請選擇一個圖像文件打開(*.bmp 或*.jpg)’; 080 Form1.OpenPictureDialog1.InitialDir:=’C:\My Documents\My Pictures’; 081 if Form1.OpenPictureDialog1.Execute then 082 Form1.Image1.Picture.LoadFromFile(Form1.OpenPicturedialog1.FileName);// 導入圖像文件 083 if uppercase(extractfileext(Form1.openpicturedialog1.FileName))=’.JPG’ then//判斷導入的圖像文件是否為JPG 格式 084 begin 085 Form1.Button5.Enabled:=true;//激活JPG 格式轉換成BMP 格式按鈕 086 end 087 else if 088 uppercase(extractfileext(Form1.openpicturedialog1.FileName))=’.BMP’ then //判斷導入的圖像文件是否為BMP 格式 089 begin 090 Form1.Button4.Enabled:=true; 091 //激活BMP 格式轉換成JPG 格式按鈕 092 end; 093 end; 094 procedure TForm1.Button4Click(Sender: TObject); 095 begin 096 Form1.SavePictureDialog1.DefaulText:=’jpg’; 097 //設置缺省文件擴展名 098 i:=Tbitmap.Create; 099 j:=TjpegImage.Create; 100 //創建兩個圖像對象 101 i.LoadFromFile(Form1.openpicturedialog1.FileName); 102 j.assign(i); 103 if Form1.Savepicturedialog1.execute then 104 j.Savetofile(Form1.savepicturedialog1.FileName); 105 //存儲圖像文件 106 i.free; 107 j.free; 108 //釋放定義的變量 109 end; 110 procedure TForm1.Button5Click(Sender: TObject); 111 begin 112 Form1.SavePictureDialog1.DefaulText:=’bmp’; 113 //設置缺省文件擴展名 114 i:=Tbitmap.Create; 115 j:=TjpegImage.Create; 116 //創建兩個圖像對象 117 j.LoadFromFile(Form1.openpicturedialog1.FileName); 118 i.assign(j); 119 if Form1.Savepicturedialog1.execute then 120 j.Savetofile(Form1.savepicturedialog1.FileName); 121 //存儲圖像文件 122 j.free; 123 i.free; 124 //釋放定義的變量 125 end; 126 end.
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved