2个相同大小jepeg文件,有没有方法将图片合并.(200分)

  • 主题发起人 主题发起人 胡红兵
  • 开始时间 开始时间

胡红兵

Unregistered / Unconfirmed
GUEST, unregistred user!
只要将两图片,并列排成一排,或垂直排成一排形成一个新的图片文件,
注意我的图片是JPEG格式的.
要求用DELPHI语言实现,对能完全符合我意的,能直接使用的例子我将另加100分
 
不好意思,请问JPG和JPEG有什么区别吗
 
wqhatnet, 区别就是没有区别.
胡红兵:DELPHI主要功能不是做图形,做图形用PS多强大!
何必要用DELPHI做一个它这方面功能不强的东西呢,要知道物尽其用呀.

 
简单例子:
uses Jpeg;
var
JPEGImage: TJPEGImage;
tmpImage1, tmpImage2 :TImage;
ARect :TRect;
AWidth, AHeight :integer;
begin
DoubleBuffered:=true;
tmpImage1 := TImage.Create(Self);
tmpImage2 := TImage.Create(Self);
tmpImage1.AutoSize:=true;
tmpImage2.AutoSize:=true;

//先读入jpeg格式的图片
JPEGImage := TJPEGImage.Create;
JPEGImage.LoadFromFile('你读入的文件1');
tmpImage1.Picture.Bitmap.Assign(JPEGImage);
JPEGImage.LoadFromFile('你读入的文件2');
tmpImage2.Picture.Bitmap.Assign(JPEGImage);
AWidth := tmpImage1.Width;
AHeight:= tmpImage1.Height;
tmpImage1.AutoSize:=false;
//并排排列
// tmpImage1.Width:=tmpImage1.Width+tmpImage2.Width;
// ARect:=Rect(AWidth, 0, AWidth+tmpImage2.Width, AHeight);
//上下排列
tmpImage1.Height:=tmpImage1.Height+tmpImage2.Height;
ARect:=Rect(0, AHeight, AWidth, AHeight+tmpImage2.Height);

//合并后的图片放在tmpImage1中
tmpImage1.Canvas.CopyRect(ARect, tmpImage2.Canvas, tmpImage2.ClientRect);
JPEGImage.Assign(tmpImage1.Picture.Bitmap);
tmpImage1.Free;
tmpImage2.Free;

JPEGImage.Compress;
JPEGImage.SaveToFile('你保存的文件');
JPEGImage.Free;
end;
 
刚才测试好像有点问题,重新修改了一下:
http://www.delphibbs.com/keylife/iblog_show.asp?xid=7231
 
非常感谢yostgxf的回答, 我的上一贴也是用的你一答案. 等我测试成功后就给你加分.
另外上一问题如果将image中的图片保存为jpeg格式,
按你的方法已经实现,但还有以下问题,
我的图片为一坐标曲线图,只有白.黑.兰.红四种色.
通过保存到jpeg格式后,发现原BMP图中的兰色变成了深兰色,另外文件的压缩率也不是太高.
 
这是一个矛盾的问题。
你可以设置JPEGImage的属性。
JPEGImage.PixelFormat (jf24Bit, jf8Bit)
JPEGImage.CompressionQuality (TJPEGQualityRange = 1..100;)

你可以在help中查一查TJPEGImage的属性和方法
 
tmpImage3.free;
是否缺少?
 
谢谢,为了显示合并后的效果,我故意不释放tmpImage3的,否则就看不见了。
我的tmpImage3的parent是Self。
 
你不需要显示的话,就可以在这个过程中把它释放。[:)]
 
yostgxf写的不错。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2575718
请看看我的问题[:(]
 
jpg和jpeg是一样的嘛.
用ps快多了.
 
还请yostgxf回答我下个问题
我要图片的效果图, 请问有什么好的控件.如百叶窗等....
 
我,没有。:(
 
后退
顶部