首页 > base64

base64

uses jpeg,EncdDecd,ZLibEx

//字符串base64 编码

Function StrtoBase64(const Str:string):string;

begin

 result:=EncodeString(Str);

end;

//字符串base64  解码

Function Base64toStr(const Base64:string):string;

begin

 result:=DecodeString(base64);

end;

//Jpeg base64  编码

Function JpegToBase64(Jpeg : Tjpegimage):string;

var

  jpegstream : TMemoryStream;

  StrStream  : TStringStream;

begin

  jpegstream :=TMemoryStream.Create;

  StrStream  :=TStringStream.Create('');

  jpeg.SaveToStream(jpegstream);

  jpegstream.Position:=0;

  EncodeStream(Jpegstream,strstream);

  result:=strstream.DataString;

  jpegstream.Free;

  strstream.Free;

end;

//Jpeg base64  解码

Function Base64ToJpeg(str: string):TJpegimage;

var

  jpegstream : TMemoryStream;

  StrStream  : TStringStream;

begin

  jpegstream :=TMemoryStream.Create;

  StrStream  :=TStringStream.Create(str);

  DecodeStream(StrStream,JpegStream);

  JpegStream.Position:=0;

  result:=TJpegimage.Create;

  result.LoadFromStream(JpegStream);

  jpegstream.Free;

  strstream.Free;

 

end;

 

///将Bitmap位图转化为base64字符串

function BitmapToString(img:TBitmap):string ;

var

  ms:TMemoryStream;

  ss:TStringStream;

  s:
string;

begin

    ms :
= TMemoryStream.Create;

    img.SaveToStream(ms);

    ss :
= TStringStream.Create('');

    ms.Position:
=0;

    EncodeStream(ms,ss);
//将内存流编码为base64字符流

    s:
=ss.DataString;

    ms.Free;

    ss.Free;

    result:
=s; 

end;



///将base64字符串转化为Bitmap位图

function StringToBitmap(imgStr:string):TBitmap;

var ss:TStringStream;

    ms:TMemoryStream;

    bitmap:TBitmap;

begin

    ss :
= TStringStream.Create(imgStr);

    ms :
= TMemoryStream.Create;

    DecodeStream(ss,ms);
//将base64字符流还原为内存流

    ms.Position:
=0;

    bitmap :
= TBitmap.Create;

    bitmap.LoadFromStream(ms);

    ss.Free;

    ms.Free;

    result :
=bitmap;

end;

function CompressStrToBase64(sStr: string): string;

var

  M1: TMemoryStream;

  M0, M2: TStringStream;

begin

  Result := '';

  if sStr = '' then

    Exit;

  M0 := TStringStream.Create(sStr);

  M1 := TMemoryStream.Create;

  M2 := TStringStream.Create(' ');

  try

    M0.Position := 0;

    M1.Position := 0;

    ZCompressStream(M0, M1);

    M1.Position := 0;

    M2.Position := 0;

    EncodeStream(M1, M2);

    Result := M2.DataString;

  finally

    FreeAndNil(M0);

    FreeAndNil(M1);

    FreeAndNil(M2);

  end;

end;

function DeCompressBase64ToStr(sStr: string): string;

var

  M0, M1: TStringStream;

  M2: TMemoryStream;

begin

  Result := '';

  if sStr = '' then

    Exit;

  M0 := TStringStream.Create;

  M1 := TStringStream.Create(sStr);

  M2 := TMemoryStream.Create;

  try

    M1.Position := 0;

    M2.Position := 0;

    DeCodeStream(M1, M2);

    M0.Position := 0;

    M2.Position := 0;

    ZDecompressStream(M2, M0);

    Result := M0.DataString;

  finally

    FreeAndNil(M0);

    FreeAndNil(M2);

    FreeAndNil(M1);

  end;

end;



 

转载于:https://www.cnblogs.com/hnxxcxg/archive/2011/08/14/2940595.html

更多相关:

  • importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.SecretKey;importjavax.crypto.SecretKeyFactory;importjavax.crypto.spec.DESKeySpec;//结果与DES算...

  • 题目:替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 解题: 时间复杂度:O(n) 空间复杂度:O(n) class Solution { public:s...

  • 在C++11标准库中,string.h已经添加了to_string方法,方便从其他类型(如整形)快速转换成字面值。 例如: for (size_t i = 0; i < texArrSize; i++)RTX_Shader.SetInt(string("TexArr[") + to_string(i) + "]", 7 + i);...

  • Ubuntu 14.04安装并升级之后,变成楷体字体非常难看,我昨天搞了一晚上,终于理了个头绪,这里整理一下。 经过网上调研,大家的一致看法是,使用开源字体库文泉驿的微黑字体效果比较理想,甚至效果不输windows平台的雅黑字体。下面我打算微黑来美化Ubuntu 14.04. 1.安装文泉驿微黑字体库 sudo aptitude...

  • 使用string时发现了一些坑。 我们知道stl 容器并不是线程安全的,所以在使用它们的过程中往往需要一些同步机制来保证并发场景下的同步更新。 应该踩的坑还是一个不拉的踩了进去,所以还是记录一下吧。 string作为一个容器,随着我们的append 或者 针对string的+ 操作都会让string内部的数据域动态增加,而动态增加的...

  • CFAbsoluteTime start = CFAbsoluteTimeGetCurrent(); //在这写入要计算时间的代码 // do something CFAbsoluteTime end = CFAbsoluteTimeGetCurrent(); NSLog(@"%f", end - start); 转载于:ht...

  • Given a sorted integer array without duplicates, return the summary of its ranges. For example, given [0,1,2,4,5,7], return ["0->2","4->5","7"]. 代码要求对数组中的元素进行分段。 首先给...

  • Hello,此BAT脚本能够帮助开发者将某目录下全部SQL脚本按文件名称依次在指定数据库中批量执行。不用忍受powershell invoke-sqlcmd 的笨重。在指执行时多一种选择。 bat文件 @echo off @REM ******** ******** General Batch for Starting SQL...

  • Description 设有一个n×m(小于100)的方格(如图所示),在方格中去掉某些点,方格中的数字代表距离(为小于100的数,如果为0表示去掉的点),试找出一条从A(左上角)到B(右下角)的路径,经过的距离和为最小(此时称为最小代价),从A出发的方向只能向右,或者向下。 Sample Input 4 4 4 10 7 0...

  • 有些Windows聚焦图片确实很漂亮,很希望保留下来,但是Windows聚焦图片总更好,网上有得到聚焦图片的方法,每次都手动去弄真麻烦,于是自己编了一个小程序,自动得到Windows聚焦图片,下面是运行这个小程序得到Windows聚焦图片的效果! 小工具以及源码下载:http://download.csdn.net/detail/su...