高手请进 字符转换成图片

zhjchinese 2011-03-23 12:51:23
现在做个项目,调用对方给的函数,返回一个byte(),现在要将其生成图片,根据对方公司说法是:要把字符串转换成16进制字节,然后装换成灰度图像
如:返回 00112233 -> 0x00 0x11 0x22 0x33 -> RGB 灰度
请教高手,VB中如何操作啊 我分数只有这么了。谢谢大虾们哈,我做了两天还是没有解出来
...全文
243 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
  • 打赏
  • 举报
回复
没人理啊???
打开链接下载源码: https://pan.quark.cn/s/05da658a2377 在信息技术领域中,输入法作为操作系统的一个核心构成部分,赋予了用户利用键盘输入多语种文字的能力。"ime-日语输入法安装必须文件"这一资源是一套为日语输入法部署而设计、包含全部必要元素的集成包,对于那些需要在个人计算机上执行日语文字输入的操作者而言具有不可替代的作用。接下来将深入剖析其中所包含的核心概念。 IME(Input Method Editor,输入法编辑器)是操作系统内的一种软件支持服务,其功能在于为非拉丁字符环境提供文字输入方案,例如中文、日文、韩文等文字系统。在日本地区,IME通常被用来将罗马字(罗马拼音)形式的输入转换为平假名、片假名乃至汉字。此压缩文件内含的日语IME文件夹即为执行这一转换功能的关键要素。 kbdjpn.dll被视为一个关键的系统性文件,其意指“Japanese Keyboard Layout”(日语键盘布局)。该动态链接库文件负责设定日语键盘的排列方式及快捷操作组合,使用户能够借助常规的QWERTY键盘输入日语文字。倘若缺少这一文件,即便已经安装了日语输入法,依然无法正常显示及输入日语字符。 另外,imjp81k.dll同样是一个重要的系统性构成,它属于日语IME的范畴,全称为“Input Method Japanese for Windows 8.1 and later, Katakana mode”(适用于Windows 8.1及更新版本的日语输入法,片假名模式)。该文件支持日语的片假名输入,是处理日语输入的核心组成部分。在安装或升级日语输入法的过程中,保证imjp81k.dll的准确性与完整性显得尤为关键。 压缩包所含的"Window...

7,788

社区成员

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

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