将Bitmap位图转化为base64字符串互转
来源:互联网 发布:定义一个二维数组 编辑:程序博客网 时间:2024/05/29 13:24
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.ScrollBox, FMX.Memo, FMX.Objects;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
Memo1: TMemo;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
uses
Soap.EncdDecd;
//建议看一下这个文章https://www.cnblogs.com/studypanp/p/4906349.html
/////--------流转换Begin------- //////////////////
function StreamToBytes(aStream:TStream):TBytes;
begin
// aStream := TMemoryStream.Create; //此处,不需要初始化流
try
SetLength(Result, aStream.Size);
aStream.Position := 0;
aStream.Read(Result[0], aStream.Size);
finally
aStream.Free;
end;
end;
///将Bitmap位图转化为base64字符串
function BitmapToString(FileName:string):string ;
var
ms:TMemoryStream;
ss:TStringStream;
s:string;
begin
ms := TMemoryStream.Create;
ms.LoadFromFile(FileName);
ss := TStringStream.Create;
ms.Position:=0;
EncodeStream(ms,ss);//将内存流编码为base64字符流
s:=ss.DataString;
s := StringReplace(s, #13, '', [rfReplaceAll]); // 这里m2中数据会自动添加回车换行,所以需要将回车换行替换成空字符
s := StringReplace(s, #10, '', [rfReplaceAll]);
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 BaseImage(fn: string): string;
var
m1: TMemoryStream;
m2: TStringStream;
str: string;
begin
m1 := TMemoryStream.Create;
m2 := TStringStream.Create;
m1.LoadFromFile(fn);
EncodeStream(m1, m2); // 将m1的内容Base64到m2中
str := m2.DataString;
str := StringReplace(str, #13, '', [rfReplaceAll]); // 这里m2中数据会自动添加回车换行,所以需要将回车换行替换成空字符
str := StringReplace(str, #10, '', [rfReplaceAll]);
result := str; // 返回值为Base64的Stream
m1.Free;
m2.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
// Memo1.Lines.Add(BaseImage(OpenDialog1.FileName));
Memo1.Lines.Add(BitmapToString(OpenDialog1.FileName))
end;
end;
end.
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.ScrollBox, FMX.Memo, FMX.Objects;
type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
Memo1: TMemo;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
uses
Soap.EncdDecd;
//建议看一下这个文章https://www.cnblogs.com/studypanp/p/4906349.html
/////--------流转换Begin------- //////////////////
function StreamToBytes(aStream:TStream):TBytes;
begin
// aStream := TMemoryStream.Create; //此处,不需要初始化流
try
SetLength(Result, aStream.Size);
aStream.Position := 0;
aStream.Read(Result[0], aStream.Size);
finally
aStream.Free;
end;
end;
///将Bitmap位图转化为base64字符串
function BitmapToString(FileName:string):string ;
var
ms:TMemoryStream;
ss:TStringStream;
s:string;
begin
ms := TMemoryStream.Create;
ms.LoadFromFile(FileName);
ss := TStringStream.Create;
ms.Position:=0;
EncodeStream(ms,ss);//将内存流编码为base64字符流
s:=ss.DataString;
s := StringReplace(s, #13, '', [rfReplaceAll]); // 这里m2中数据会自动添加回车换行,所以需要将回车换行替换成空字符
s := StringReplace(s, #10, '', [rfReplaceAll]);
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 BaseImage(fn: string): string;
var
m1: TMemoryStream;
m2: TStringStream;
str: string;
begin
m1 := TMemoryStream.Create;
m2 := TStringStream.Create;
m1.LoadFromFile(fn);
EncodeStream(m1, m2); // 将m1的内容Base64到m2中
str := m2.DataString;
str := StringReplace(str, #13, '', [rfReplaceAll]); // 这里m2中数据会自动添加回车换行,所以需要将回车换行替换成空字符
str := StringReplace(str, #10, '', [rfReplaceAll]);
result := str; // 返回值为Base64的Stream
m1.Free;
m2.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
// Memo1.Lines.Add(BaseImage(OpenDialog1.FileName));
Memo1.Lines.Add(BitmapToString(OpenDialog1.FileName))
end;
end;
end.
阅读全文
0 0
- 将Bitmap位图转化为base64字符串互转
- 如何将Bitmap位图与base64字符串相互转换[delphi]
- 将PyQt4.QtGui.QImage对象转化为base64字符串
- 将画布上的图像转化为base64字符串
- 使用fileread将img转化为base64
- adndriod 将图片转化成base64字符串
- C#判断字符串是否base64,及base64转换为Bitmap
- 将view对象转化为Bitmap
- Android图片 将Drawable转化为Bitmap
- 将view对象转化为Bitmap
- 将01矩阵转化为bitmap文件
- 将view对象转化为Bitmap
- Android将BitMap转化为圆形
- Android 将View 转化为bitmap 图片
- 将图片网址url转化为bitmap
- 将bitmap转化成字符串String
- 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
- 将字符串转化为日期
- conn.excute()插入数据库成功,但却返回false原因
- Hive SQl语句的执行
- ASP.NET Web Forms
- C#总结---属性、类、对象、方法
- ASP.NET Web Forms
- 将Bitmap位图转化为base64字符串互转
- WEB前端 -- 单选按钮、下拉、隐藏、表单
- 代码编辑器中文字符编码转换
- Python--json
- Retrofit2.0使用总结
- 基于PYQT的MQTT协议测试工具
- 51nod 与七无关的数
- shell编程快捷方法
- JavaScript 教程