DFW里有朋友问: 有多个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:\0.jpg'); finally bmp.Free; bmp_t.Free; end; finally jp1.Free; jp2.Free; jp.Free; end; end; 这里两个原始jpeg图片的宽高都是一样的,如果图片宽度可能不一致那可以先计算一下所有图片的最大宽度,再画就行了。 由于懒得研究jpeg的文件结构和压缩算法,就拿delphi自带的Jpeg单元偷懒咯,呵呵 
|