网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> Delphi编程 >> 文章正文
  Delphi实现三张图片合成            【字体:
Delphi实现三张图片合成
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-12    
正在装载数据……

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls,StrUtils,Qt,Zlib,JPEG,Math, FileCtrl,initialize;

 

procedure TF_tphc.Button1Click(Sender: TObject);
type
Tfn=array[0..2]of string;
var i:integer;
s,path:string;
  fn:Tfn;
  WillbeChangedBmp,TestBmp,ChangedBmp:TBitMap;
  ComdivssStream:TMemoryStream;
begin

  WillbeChangedBmp:=TBitMap.Create;
  WillbeChangedBmp:=Image1.Picture.Bitmap;
  TestBmp:=TbitMap.Create;
  TestBmp.Assign(WillbeChangedBmp);
  ChangedBmp:=TBitMap.Create;
  ChangedBmp:=Image1.Picture.Bitmap;
  ChangedBmp.Assign(TestBmp);
  WillbeChangedBmp:=Image2.Picture.Bitmap;
  TestBmp.Assign(WillbeChangedBmp);
  ChangedBmp.Assign(TestBmp);
   WillbeChangedBmp:=Image3.Picture.Bitmap;
  TestBmp.Assign(WillbeChangedBmp);
  ChangedBmp.Assign(TestBmp);   //合成???///
    //判断是否叠加时间标注
    If CheckBox2.Checked = true Then
    begin
       // Picture1.CurrentY = Picture1.Height - 30?????????//
        // Edit3.Visible:=true;
        s:=FormatDatetime('yyyy-mm-dd hh:mm:ss',GetFileLastWriteTime(fn[1]));
        //Edit3.Text:=s;
     end;
    Randomize;
    //加上随机数,防止重名
    s:= FormatDatetime('yyyymmddhhmmss',GetFileLastWriteTime(fn[1]))+IntToStr(random(9) + 1);
    Edit3.text:=s;
     if  DirectoryExists(CurDir+'hc')=false then
       begin
          CreateDir(CurDir+'hc');
       end;
    Image1.Picture.SaveToFile(CurDir+'hc\hc.jpg');
    path:=Edit2.Text;
    If RightBStr(path, 1) <> '\' Then
        path:=path + '\';
ComdivssStream := TMemoryStream.Create;
Try
ChangedBmp.SaveToStream(ComdivssStream);
ComdivssBitmap(ComdivssStream, clDefault);
ComdivssStream.SaveToFile(CurDir+s+'.BMP');
finally
ComdivssStream.Free;
end;
If CheckBox1.Checked=true Then
         begin
          DeleteFile( fn[0]);
             DeleteFile( fn[1]);
            DeleteFile( fn[2]);
        End ;
      MessageDlg('图片合成',mtInformation,[mbok],0);
        FileListBox1.Refresh;
    End;

 

压缩图像

   procedure ComdivssBitmap(var ComdivssedStream: TMemoryStream;const ComdivssionLevel: TComdivssionLevel);

    var

     SourceStream: TComdivssionStream;

     DestStream: TMemoryStream;

     Count: Integer;

    Begin

     file://获得图像流的原始尺寸

     Count := ComdivssedStream.Size;

     DestStream := TMemoryStream.Create;

     SourceStream:=TComdivssionStream.Create

     (ComdivssionLevel, DestStream);

     Try

      file://SourceStream中保存着原始的图像流

      ComdivssedStream.SaveToStream(SourceStream);

      file://将原始图像流进行压缩, DestStream中保存着压缩后的图像流

      SourceStream.Free;

      ComdivssedStream.Clear;

      file://写入原始图像的尺寸

      ComdivssedStream.WriteBuffer(Count, SizeOf

      (Count));

      file://写入经过压缩的图像流

      ComdivssedStream.CopyFrom(DestStream, 0);

      finally

      DestStream.Free;

     end;

    end;

 


本文来源:http://blog.csdn.net/guoqlee/archive/2007/08/17/1748406.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     在delphi中使用xml文档有…
     初探delphi 7 中的插件编…
     delphi 2006(dexter) & …
     获得windows的版本信息。
     “序列号输入助手”源代…
     rs232串口通讯模块
     ado方式下判断数据表是否…
  • Ant入门-配置和使用     选…

  • 浅析Spring框架下PropertyPl…

  • SPRING+STRUTS+HIBERNATE登录…

  • MVP——Model-Viewer-Presen…

  • C++ Object Model

  • constructor and destructor

  • 绑定HGE到AngelScript脚本系…

  • delegate C#关键字 (委托类型…

  • Boyer-Moore String Searchi…

  • 【游戏制作基础】网络游戏设…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David