pythonnet 在 Python中 转换 Bitmap 到 bytes

要在 python 调用 C# 的库,心态爆炸

我无法在python中导入 System.Drawing 包,这里测试使用的 Bitmap对象来自于其他 DLL 返回。

pythonnet 版本为 2022年的预发行版 3.0.0a2

import pythonnet
import clr
from System.IO import SeekOrigin
from System.IO import MemoryStream
from System.Collections import *

# 主要函数,使用 MemoryStream做中转,把图像数据变成字节数组。
def bitmap2bytes(bitmap):
    stream = MemoryStream()
    bitmap.Save(stream, bitmap.RawFormat.Png)
    stream.Seek(0, SeekOrigin.Begin)
    data = bytes(stream.ToArray())
    return data


# Bitmap 对象来自某DLL的返回。我无法在导入 System.Drawing 的包来得到一个Bitmap对象做实验,所以这里仅做示例。
# bmp = Bitmap()
# xxx_mod.GetImage 为任意一个 C# 模块的能返回Bitmap对象的方法
bmp = xxx_mod.GetImage()

data = bitmap2bytes(bmp)
# 得到python字节对象,可以用cv2.imdecode来解码或直接写入到文件
print(len(data))
print(data)
open('a.png', 'wb').write(data)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值