JPEG和Variant的转换
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.
JPEG和Variant的转换的更多相关文章
- opencv IplImage各参数详细介绍以及如何从一个JPEG图像数据指针转换得到IplImage
这篇文章里介绍得最清楚了.http://blog.chinaunix.net/uid-22682903-id-1771421.html 关于颜色空间 RGB颜色空间已经非常熟悉了.HSV颜色空间需要 ...
- CString VariantToString(VARIANT var);转换
Variant类型转换成CString代码 对数据库的操作常常会用Variant和_bstr_t类型,在进行MFC等程序中,通常会用到CString类.从variant转换成CString代码如下:v ...
- 文件和Variant的转换
function FileToVariant(FileName: String): OleVariant; var AStream: TFileStream; MyBuffer: Pointe ...
- 流和Variant的转换
procedure TForm2.VariantToStream (const v : olevariant; Stream : T ...
- bmp和Variant的转换
procedure TForm2.VariantToBMP(aValue : OleVariant;var aBmp:TBitmap); var Stream : TMemoryStream; ...
- 渐进式jpeg(progressive jpeg)图片及其相关 --图片的两种加载方式
渐进式jpeg(progressive jpeg)图片及其相关 一.基本JPEG(baseline jpeg)和渐进JPEG 网络上那些色色的照片都是.jpg格式的("色色"指 ...
- 使用textutil进行文件格式转换
Typorahtml, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMirror-scroll { ...
- 【转】C#使用ESC指令控制POS打印机打印小票
.前言 C#打印小票可以与普通打印机一样,调用PrintDocument实现.也可以发送标注你的ESC指令实现.由于 调用PrintDocument类时,无法操作使用串口或TCP/IP接口连接的pos ...
- Word,PDF,PPT,TXT之间的转换方法
来源: 刘波的日志 一.把PPT转WORD形式的方法 1.利用"大纲"视图 打开PPT演示文稿,单击"大纲",在左侧"幻灯片/大纲”任务窗格的“大纲” ...
随机推荐
- R(2) sample
sample: 从整体中挑出部分样本数据函数 Usage: sample.int(n, size = n, replace = FALSE, prob = NULL) x:可以是R中任何对象 siz ...
- You Arent Gonna Need It 理解
软件开发是一项无法驾驭全局的工作,其工作效率,工作精神都高度依赖需求反馈. 开发不存在需求的功能,实际上是除了要开发软件,还要构思需求,这样一正一反,严重消耗了脑力资源. 如果是自己开发软件,需求来自 ...
- android 关于listview scrollview 底部 控件无法显示的两个解决方案
方案一 用LinearLayout实现,代码如下: <!-- 中奖纪录 by mhd --> <LinearLayout xmlns:android="http://sch ...
- bzoj3503 和谐矩阵
Description 我们称一个由0和1组成的矩阵是和谐的,当且仅当每个元素都有偶数个相邻的1.一个元素相邻的元素包括它本身,及他上下左右的4个元素(如果存在).给定矩阵的行数和列数,请计算并输出一 ...
- freemarker 宏嵌套nested 的使用
转载来源:http://blog.sina.com.cn/s/blog_7e5699790100z59g.html 模板页: <#assign basePath = request.contex ...
- java web程序 登陆验证页面 4个页面人性化设置
到这里,快期末考试了,老师不讲课,我心里有苦不想说,也许没有考虑到老师的感受,让老师难堪了 但是我的行为已不再是我可以做的了.不可能了,我只是职业性的机械的做事了. 思路: 1.第一个是form表单, ...
- linux 守护进程 daemon
Linux的Service/Daemon你真的懂了吗? Linux 守护进程的启动方法 linux系统编程之进程(八):守护进程详解及创建,daemon()使用 linux守护进程 daemon 详解
- 使用oracle导出的dmp文件(包含表结构还是表数据?)
我们都知道oracle提供了一个exp程序,可以导出dmp文件,那么dmp文件中到底包含哪些东西呢? 1:有对象的信息吗?比如对象的权限? 2:有表空间信息吗? 3:有表结构吗? 4:有表的索引和触发 ...
- BatchNormalization批量归一化
动机: 防止隐层分布多次改变,BN让每个隐层节点的激活输入分布缩小到-1和1之间. 好处: 缩小输入空间,从而降低调参难度:防止梯度爆炸/消失,从而加速网络收敛. BN计算公式: keras.laye ...
- Mybatis 测试延迟加载
在学习mybatis的延迟加载时,对 lazyLoadingEnabled 和 aggressiveLazyLoading 的区别并不理解,特别是对查询的条件不同时,执行的查询语句也不一样,所以还是测 ...