如何将Bitmap位图与base64字符串相互转换[delphi]

本文介绍如何在Delphi中实现Bitmap位图与Base64字符串之间的相互转换,包括两个实用函数:一个用于将Bitmap转换为Base64字符串,另一个用于将Base64字符串还原为Bitmap。
uses EncdDecd;

然后就可以使用下面二个函数了:

by 菩提树下的杨过 http://yjmyzz.cnblogs.com/
///将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;

参见:

http://www.pc100.net/delphi/zhuanti/delphi-pchar-string.html

http://www.pc100.net/delphi/zhuanti/delphi-override-overload.html

在 Android 开发中,将 `Bitmap` 图像转换Base64 字符串是常见的需求,尤其是在需要将图像以字符串形式上传至服务器的场景中。通过这种方式,可以简化图像数据在网络请求中的传输流程,避免处理复杂的二进制流。以下是实现该功能的具体方法。 ### Bitmap 转换Base64 字符串 在 Android 中,可以使用 `Bitmap.compress()` 方法将 `Bitmap` 对象压缩为字节数组,然后使用 `Base64.encodeToString()` 方法将其转换Base64 编码的字符串。示例代码如下: ```java Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.sample_image); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); byte[] byteArray = byteArrayOutputStream.toByteArray(); String base64String = Base64.encodeToString(byteArray, Base64.DEFAULT); ``` 上述代码中,`Bitmap.CompressFormat.JPEG` 表示将图像压缩为 JPEG 格式,也可以选择 `PNG` 格式以保留透明通道。压缩质量参数为 100,表示无损压缩。最终通过 `Base64.encodeToString()` 将字节数组转换Base64 字符串,可用于网络请求或数据存储 [^2]。 ### Base64 字符串还原为 Bitmap 若需将 Base64 字符串还原为 `Bitmap`,可以使用 `Base64.decode()` 方法将字符串解码为字节数组,并通过 `BitmapFactory.decodeByteArray()` 方法生成 `Bitmap`: ```java byte[] decodedBytes = Base64.decode(base64String, Base64.DEFAULT); Bitmap decodedBitmap = BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length); ``` 该方法适用于从服务器接收 Base64 图像数据并进行本地显示或进一步处理的场景 [^1]。 ### 网络请求中使用 Base64 图像数据 在 API 请求中,通常需要将 Base64 字符串作为 JSON 数据的一部分发送。例如,使用 `OkHttp` 构建请求体: ```java JSONObject jsonBody = new JSONObject(); try { jsonBody.put("image", base64String); } catch (JSONException e) { e.printStackTrace(); } RequestBody requestBody = RequestBody.create(MediaType.get("application/json"), jsonBody.toString()); ``` 该方式适用于后端服务通信时,要求图像数据以字符串形式传输的场景 [^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值