中国程序员联盟 正在重新改版中ing 不便之处还请见谅 改版后将内容涉及java delphi .net php
 
  首页 | 数据库开发 | 网络通讯 | 多线程 | 多媒体开发 | 图像处理 | 程序人生 | 系统函数 | 控件开发 | Web服务
 
  当前位置:笨鱼delphi技术网>数据库开发>代码分析>文章内容

delphi Jpeg和variant的转换

来源:网络 关于:轶名 发布时间:2007-07-02   [收藏] [推荐]

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls,    
  Forms, Dialogs,jpeg, ExtCtrls, StdCtrls,ActiveX, AxCtrls;
type
  TForm1 = class(TForm)
    Image1: TImage;
    Button2: TButton;
    Image2: TImage;
    procedure Button2Click(Sender: TObject);
  private
    procedure StreamToVariant(Stream: TMemoryStream;
                              var v:  OleVariant);
    procedure VariantToStream(const v: olevariant;
                              Stream: TMemoryStream);
    procedure JPEGToVariant(aJPEG : TJPEGImage;
                             var aVariant:OleVariant);
    procedure VariantToJPEG(aValue : OleVariant;
                             var aJPEG:TJPEGImage);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.VariantToStream (const v : olevariant; Stream : TMemoryStream);
var
  p : pointer;
begin
  Stream.Position := 0;
  Stream.Size := VarArrayHighBound (v, 1) - VarArrayLowBound (v, 1) + 1;
  p := VarArrayLock (v);
  Stream.Write (p^, Stream.Size);
  VarArrayUnlock (v);
  Stream.Position := 0;
end;

procedure TForm1.StreamToVariant (Stream : TMemoryStream; var v : OleVariant);
var
  p : pointer;
begin
  v := VarArrayCreate ([0, Stream.Size - 1], varByte);
  p := VarArrayLock (v);
  Stream.Position := 0;
  Stream.Read (p^, Stream.Size);
  VarArrayUnlock (v);
end;

procedure TForm1.JPEGToVariant(aJPEG : TJPEGImage; var aVariant:OleVariant);
var
  Stream        : TMemoryStream;
begin
    try
      Stream := TMemoryStream.Create;

      aJPEG.Assign(Image1.Picture.Bitmap);
      aJPEG.SaveToStream(Stream);

      StreamToVariant(Stream, aVariant);
    finally
       Stream.Free;
   end;
end;


procedure TForm1.VariantToJPEG(aValue : OleVariant;var aJPEG:TJPEGImage);
var
   Stream : TMemoryStream;
begin
try
  Stream := TMemoryStream.Create;

  VariantToStream (aValue,Stream);
  aJPEG.LoadfromStream(Stream);

finally
   VariantClear(aValue);
   Stream.free;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
   aJPEG :TJPEGImage;
   aVariant : OleVariant;
begin
try
   aJPEG:=TJPEGImage.Create;

   //JPEG To Variant
   aJPEG.Assign(Image1.Picture.Bitmap);
   JPEGToVariant(aJPEG,aVariant);


   //Variant To JPEG
   VariantToJPEG(aVariant,aJPEG);
   Image2.Picture.assign(aJPEG);
finally
   aJPEG.free;
end;
end;

end.


[浏览: 次]   
上一篇:delphi Jpeg和variant的   下一篇:delphi 流和Variant转换
[收藏] [推荐] [返回顶部] [打印本页] [关闭窗口]  
    评论加载中…
google adsense热点文章
·delphi Delphi_动态数组介绍----Delphi
·delphi 检查IP地址
·delphi DBExpress 提高
·delphi 复制Excel列到二维数组
·delphi Delphi_VCL消息处理机制的内幕
·delphi 产生不重复的随机数
·delphi 如何在DELPHI里调用MS office
·delphi 缓冲池
·delphi MIDAS——多层分布式应用程序服
·delphi 在WORD文档里添加页签
·delphi Asta多层应用实现
·delphi Datamodule的应用方式
     delphi技术网 | firefox 下载 | Avant Browser下载 | dedecms 技术网 | drupal 爱好者 | php 技术网
  Copyright@www.delphichm.com,2006-2009.All Rights Reserved.
 
程序员联盟 | delphi Java .net|QQ:707102932