有多個jpg文件,如:
1.jpg
2.jpg
3.jpg
......
怎樣將這些文件以追加形式合並成一個新的jpg文件?也就是說1.jpg作為第一頁,2.jpg作為第二頁,如此類推.
想了一下,思路就是把每個jpeg文件解碼成位圖以後進行拼接再編碼為jpeg
uses ..., Jpeg;
......
procedure TForm1.Button1Click(Sender: TObject);
var
jp1, jp2, jp: TJPEGImage;
bmp_t, bmp: TBitmap;
begin
jp1 := TJPEGImage.Create;
jp2 := TJPEGImage.Create;
jp := TJPEGImage.Create;
try
jp1.LoadFromFile('C:1.jpg');
jp2.LoadFromFile('C:2.jpg');
bmp := TBitmap.Create;
bmp_t := TBitmap.Create;
try
bmp.Width := jp1.Width;
bmp.Height := jp1.Height + jp2.Height;
bmp_t.Assign(jp1);
bmp.Canvas.Draw(0, 0, bmp_t);
bmp_t.Assign(jp2);
bmp.Canvas.Draw(0, jp1.Height, jp2);
jp.Assign(bmp);
jp.SaveToFile('C:.jpg');
finally
bmp.Free;
bmp_t.Free;
end;
finally
jp1.Free;
jp2.Free;
jp.Free;
end;
end;
這裡兩個原始jpeg圖片的寬高都是一樣的,如果圖片寬度可能不一致那可以先計算一下所有圖片的最大寬度,再畫就行了。
由於懶得研究jpeg的文件結構和壓縮算法,就拿Delphi自帶的Jpeg單元偷懶咯,呵呵