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位圖轉(zhuǎn)化為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);//將內(nèi)存流編碼為base64字符流
 ????s:=ss.DataString;
 ????ms.Free;
 ????ss.Free;
 ????result:=s;?
end;
///將base64字符串轉(zhuǎn)化為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字符流還原為內(nèi)存流
 ????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;
 ?
轉(zhuǎn)載于:https://www.cnblogs.com/hnxxcxg/archive/2011/08/14/2940595.html
總結(jié)
 
                            
                        - 上一篇: 国粹酒价格
- 下一篇: qq个性签名社会现实
