高手请进 字符转换成图片

zhjchinese 2011-03-23 12:51:23
现在做个项目,调用对方给的函数,返回一个byte(),现在要将其生成图片,根据对方公司说法是:要把字符串转换成16进制字节,然后装换成灰度图像
如:返回 00112233 -> 0x00 0x11 0x22 0x33 -> RGB 灰度
请教高手,VB中如何操作啊 我分数只有这么了。谢谢大虾们哈,我做了两天还是没有解出来
...全文
180 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhjchinese 2011-03-23
  • 打赏
  • 举报
回复
转灰度的我在网上找了个,不知道行不行,我现在的问题卡在byte生成图片上,用网上提供的
Private Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As Any) As Long
Private Declare Function OleLoadPicture Lib "olepro32" (pStream As Any, ByVal lSize As Long, ByVal fRunmode As Long, riid As Any, ppvObj As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32" (ByVal lpsz As Any, pclsid As Any) As Long
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal uFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal dwLength As Long)

Public Function PictureFromByteStream(b() As Byte) As IPicture
Dim LowerBound As Long
Dim ByteCount As Long
Dim hMem As Long
Dim lpMem As Long
Dim IID_IPicture(15)
Dim istm As stdole.IUnknown

On Error GoTo Err_Init
If UBound(b, 1) < 0 Then
Exit Function
End If

LowerBound = LBound(b)
ByteCount = (UBound(b) - LowerBound) + 1
hMem = GlobalAlloc(&H2, ByteCount)
If hMem <> 0 Then
lpMem = GlobalLock(hMem)
If lpMem <> 0 Then
MoveMemory ByVal lpMem, b(LowerBound), ByteCount
Call GlobalUnlock(hMem)
If CreateStreamOnHGlobal(hMem, 1, istm) = 0 Then
If CLSIDFromString(StrPtr("{7BF80980-BF32-101A-8BBB-00AA00300CAB}"), IID_IPicture(0)) = 0 Then
Call OleLoadPicture(ByVal ObjPtr(istm), ByteCount, 0, IID_IPicture(0), PictureFromByteStream)
End If
End If
End If
End If

Exit Function

Err_Init:
If Err.Number = 9 Then
'Uninitialized array
MsgBox "您给函数提供的是空数组!"
Else
MsgBox Err.Number & " - " & Err.Description
End If
End Function
这个,传入进入进去的byte总是不能生成图片,如果用open打开一个图片文件,调用此方面又可以生成图片
dbcontrols 2011-03-23
  • 打赏
  • 举报
回复
结帖率:66.67%
yachong 2011-03-23
  • 打赏
  • 举报
回复
嘿嘿
转字符串好办,转成灰度图片就不知道怎么搞了
回帖纯粹是为了每日赚10分可用分
zhjchinese 2011-03-23
  • 打赏
  • 举报
回复
呵呵。。如果是为了分的话,我说声对不起哈。因为用的同事的帐号,并没有查哈。非常不好意思
无·法 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yachong 的回复:]

引用楼主 zhjchinese 的回复:
请教高手,VB中如何操作啊 我分数只有这么了。谢谢大虾们哈,我做了两天还是没有解出来


(用户名:zhjchinese)
注册日期:2004年01月14日 可用分:共 1160 分

看到别人哭穷,我经常会过去看看是不是真的穷人
呵呵
[/Quote]我也去看了下,楼主果然有很多分。
yachong 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhjchinese 的回复:]
请教高手,VB中如何操作啊 我分数只有这么了。谢谢大虾们哈,我做了两天还是没有解出来
[/Quote]

(用户名:zhjchinese)
注册日期:2004年01月14日 可用分:共 1160

看到别人哭穷,我经常会过去看看是不是真的穷人
呵呵
king06 2011-03-23
  • 打赏
  • 举报
回复
mid两位两位的截取,然后hex()之不就是了吗,至于"0x00 0x11 0x22 0x33 -> RGB 灰度"还有啥规则?
zhjchinese 2011-03-23
  • 打赏
  • 举报
回复
VB我不是很熟。试了几种图片都生成不了
橘子皮... 2011-03-23
  • 打赏
  • 举报
回复
这个。。。感觉不难啊,你计算机专业的,还搞不定吗?
dbcontrols 2011-03-23
  • 打赏
  • 举报
回复
没人理
没天理
[Quote=引用 1 楼 zhjchinese 的回复:]
没人理啊???
[/Quote]
zhjchinese 2011-03-23
  • 打赏
  • 举报
回复
没人理啊???

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧