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