当前位置:编程学习 > VB >>

PNG转BYTE

PNG转BYTE后存数据库,取出至内存通过GDI+显示图片,不要整个文件写入数据库,整个流程是将PNG数据写入并读取至内存。
图片 内存 gdi+ 数据库 --------------------编程问答--------------------
引用 楼主 jardyson 的回复:
……不要整个文件写入数据库…………。

既然要存入数据库,不“整个文件写入”怎么行?


难道图像大小、调色板等信息都丢掉了,只有那堆“颜色”的数据,你还能将它还原?
--------------------编程问答-------------------- 你说的是不是指:不要把路径存到数据库?而是把图片二进制存到数据库?这样你可以把数据库复制到任何电脑,单个EXE+数据库直接可以显示很多图片?不需要再复制一个图片文件夹,是这意思不? --------------------编程问答-------------------- 用 CreateStreamOnHGlobal Lib "ole32"的方式是可以实现从内存中加载二进制图片到PICTURE1控件上,JPG格式的是可以,PNG的没有试过,你要用GDI+的方式我还没试过 --------------------编程问答--------------------
引用 2 楼 xiaoyao961 的回复:
你说的是不是指:不要把路径存到数据库?而是把图片二进制存到数据库?这样你可以把数据库复制到任何电脑,单个EXE+数据库直接可以显示很多图片?不需要再复制一个图片文件夹,是这意思不?

是的,我的程序是这个需求。
TO Chen8013:颜色信息肯定是需要的,不过要用GDIPGetImageFromStream来生成IMAGE对象,而非GDIPGetIMageFromFile --------------------编程问答-------------------- JPEG,BMP等格式已经成功存入数据库并读取显示,不过在存储PNG时没成功。 --------------------编程问答--------------------
引用 3 楼 xiaoyao961 的回复:
用 CreateStreamOnHGlobal Lib "ole32"的方式是可以实现从内存中加载二进制图片到PICTURE1控件上,JPG格式的是可以,PNG的没有试过,你要用GDI+的方式我还没试过

此函数我已经在试用,不过很纠结,没成功,通过指定BYTE数组句柄时产生出来的ISTREAM为0 --------------------编程问答-------------------- 把 PNG文件 的数据存入数据库。

然后读取到 Byte数组中,最后用 GdipLoadImageFromStream( ) 可以创建图片。
--------------------编程问答-------------------- 问题是从BYTE转成STREAM还要经过一步CreateStreamOnHGlobal,一直是失败的 --------------------编程问答--------------------
引用 8 楼 jardyson 的回复:
问题是从BYTE转成STREAM还要经过一步CreateStreamOnHGlobal,一直是失败的

CreateStreamOnHGlobal 失败,那在这个之前的那些操作呢?
难道那几步都成功?
还是你没有进行前面操作是否成功的验证,就直接走到 CreateStreamOnHGlobal( ) 这步了?
--------------------编程问答-------------------- 真是应了那句话,会者不难,难者不会,一句话的错误,也可能几天也解决不了问题
补充:VB ,  API
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,