首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

有一个生成的图片,可以在windows下预览,但不能用loadpicture加载。解决方法

2012-01-13 
有一个生成的图片,可以在windows下预览,但不能用loadpicture加载。预览,估计够呛图片下载地址:http://d.ksx

有一个生成的图片,可以在windows下预览,但不能用loadpicture加载。
预览,估计够呛


图片下载地址:
http://d.ksxt.net/que/1.rar

用的是bmp扩展名,但实际上不是bmp格式的,我想问通过何种方式可以把此图片通过loadpicture加载,对于图像处理,一点头绪都没有。

注:这个图片实际就是进入vb后,自动存在剪贴板的那个图片,因为下载的文件大小会跟你的显示分辨率相同,可能会放大到无法分辨是什么东西,所以标注一下。

[解决办法]
lz是要把这个图片加载到哪里?窗体?picture?image?

我用画图另存可以加载,但是分辨率不好

[解决办法]
lz这样做

1。新打开vb

2。再打开画图(开始——〉程序——〉附件——〉画图),ctrl+v,看到图片了吧,

3。用放大镜放大,拖动画布到图的边

4。另存为 1.bmp

5。到vb加image控件,点picture属性,加载图片没有问题了
[解决办法]
测试

Private Sub Command1_Click()
Image2.Picture = LoadPicture("E:\test\3.bmp")
End Sub

成功
[解决办法]
该文件头没有BM标志,加上BM标志试一下。或者干脆用画图编辑程序,然后另存为BMP格式就是标准BMP文件了。
[解决办法]
LZ的图片用WINDOWS的画图板打开是如下图形:

[解决办法]
你这一大堆图片是怎么来的?都是相同情况吗?有可能对一个图片好用的方法对另一个图片不好用
[解决办法]
普通控件PictureBox、Image、PictureClip都不行,试试用高档控件:比如柯达专用控件等。
[解决办法]
主要原因是没有BMP文件头。
[解决办法]
原图文件头:
http://hi.csdn.net/attachment/200912/11/1002_1260509230BM7I.jpg
[解决办法]
可以编写程序加上这个BMP文件头
[解决办法]

[解决办法]
搞错了原图文件头如下,18楼是画图板另存为*.BMP的文件头:

[解决办法]

探讨
可以编写程序加上这个BMP文件头

[解决办法]
KAO!
一直都不明白在 VB 启动前复制的文本,为什么老是在 VB 启动后就‘消失’了。


它这样做有何目的呢?

[解决办法]
探讨
KAO!
一直都不明白在 VB 启动前复制的文本,为什么老是在 VB 启动后就‘消失’了。


它这样做有何目的呢?


[解决办法]
不是清空剪贴板,它是在剪贴板中放入了一个位图数据。
如楼主说的那种图片。

不明白 VB 为什么要这样做 ..............


楼主的 1.bmp 在我的电脑中打开,嘿嘿,有点漂亮、有点‘炫’:


[解决办法]
文件那么小,图片又那么‘炫’,也许是某种矢量图片格式的。

[解决办法]
我另存的不高也不宽,但是字节不差多少
[解决办法]
"因为下载的文件大小会跟你的显示分辨率相同,可能会放大到无法分辨是什么东西,所以标注一下。"


可能吗? 图片魔术 ? 下载下来就会变型 ?


既然你能看得到图片, 就把它保存为 .bmp .jpg 或 .gif 再LoadPicture不就好了吗?

[解决办法]
探讨
"因为下载的文件大小会跟你的显示分辨率相同,可能会放大到无法分辨是什么东西,所以标注一下。"


可能吗? 图片魔术 ? 下载下来就会变型 ?

..............

[解决办法]
头大


[解决办法]

探讨
突然想起dos时代的图片来了,应该就是那种直接把图片的点阵信息通过二进制方式存入文件

[解决办法]
你这个图片是怎么整出来,原来的后缀是什么?
[解决办法]
图片是1024*768,但它没有几个像素。直接写屏得了(直接用API读取像素显示到PictureBox中).
[解决办法]
这图片确实很奇异:
在800*600显示模式下,看图片属性显示:
800 * 600
BMP 图象
在1024*768显示模式下,看图片属性显示:
1024 * 768
BMP 图象
[解决办法]
探讨
这图片确实很奇异:
在800*600显示模式下,看图片属性显示:
800 * 600
BMP 图象
在1024*768显示模式下,看图片属性显示:
1024 * 768
BMP 图象

[解决办法]
探讨
KAO!
一直都不明白在 VB 启动前复制的文本,为什么老是在 VB 启动后就‘消失’了。


它这样做有何目的呢?


[解决办法]
探讨
引用:
KAO!
一直都不明白在 VB 启动前复制的文本,为什么老是在 VB 启动后就‘消失’了。


它这样做有何目的呢?


VB6利用剪贴板来加载的工具栏图标.

你把所有需要加载工具栏图标的插件取消,就不会动剪贴板了

[解决办法]
探讨
引用:
KAO!
一直都不明白在 VB 启动前复制的文本,为什么老是在 VB 启动后就‘消失’了。


它这样做有何目的呢?


VB6利用剪贴板来加载的工具栏图标.

你把所有需要加载工具栏图标的插件取消,就不会动剪贴板了

[解决办法]
探讨
别跑题,老马,给支个招啊。

[解决办法]
探讨
引用:
引用:
KAO!
一直都不明白在 VB 启动前复制的文本,为什么老是在 VB 启动后就‘消失’了。


它这样做有何目的呢?


VB6利用剪贴板来加载的工具栏图标.

你把所有需要加载工具栏图标的插件取消,就不会动剪贴板了

嘿,研究得真透彻啊!


[解决办法]
rtf中图片以两种方式存在,第一种方式是直接嵌入,第二种方式是作为ole对象嵌入

lz这些是哪一种,又是用什么方式获取,是否能从获取时下功夫?
[解决办法]
哦 原来这张图片有 AutoSize 的属性 领教了....^-^
[解决办法]
感觉这张图片象一张超级大的图标图片
[解决办法]
我昨天在VBGOOD将本贴转发,现在有大进展.VBGood的版主VBProFan给出了解析代码,我已经略做修改,除颜色有些差异,基本达目的,代码如下:
VB code
Option Explicit    Private Type udtRGB      R As Byte      G As Byte      B As Byte    End Type    Private MyPixel(1 To 933 / 3) As udtRGBPrivate Sub Form_Load()    Open "D:\新建文件夹\1.bmp" For Binary Access Read As #1 '奇异图片的路径        Get #1, 2, MyPixel    Close #1    Me.ScaleMode = vbPixelsEnd SubPrivate Sub Form_Paint()    Dim i As Byte    Dim j As Byte    For i = 1 To 16      For j = 1 To 16        PSet (i, 17 - j), RGB(MyPixel(j * 16 + i).R, MyPixel(j * 16 + i).G, MyPixel(j * 16 + i).B)        'PSet (j, 17 - i), RGB(MyPixel(i * 16 + j).R, MyPixel(i * 16 + j).G, MyPixel(i * 16 + j).B)      Next j    Next iEnd Sub
[解决办法]
我又改了一下,这回更加完美了:

VB code
Option ExplicitPrivate Type udtRGB  R As Byte  G As Byte  B As ByteEnd TypePrivate Const c_Size As Long = 934Private Const c_Redundant As Byte = 1Private MyPixel(1 To (c_Size - c_Redundant) / 3) As udtRGBPrivate Sub Form_Load()  Open "C:\s.bmp" For Binary Access Read As #1 '奇异图片的路径  Get #1, c_Redundant + 1, MyPixel  Close #1    Me.ScaleMode = vbPixelsEnd SubPrivate Sub Form_Paint()  Dim i As Byte  Dim j As Byte  Const c_Width As Integer = 16  Const c_Height As Integer = 16      For i = 1 To c_Width    For j = 1 To c_Height      PSet (i, c_Height + 1 - j), RGB(MyPixel(j * c_Height + i).B, MyPixel(j * c_Height + i).G, MyPixel(j * c_Height + i).R)    Next j  Next iEnd Sub 


[解决办法]
越南的网速太慢,重复发帖了,请斑竹帮我删掉重复的帖子,谢谢!
[解决办法]
Ding yi xia ...........

[解决办法]
支持~~~~~~~
[解决办法]
这是一个有吸引力的问题,再次顶下!


[解决办法]
完善了一下,并且搞了个好玩的东东:可以在不知道图片的宽度的情况下动态调整,人眼观察来寻找。

核心代码:(完整工程请到 http://www.vbgood.com/viewthread.php?tid=89736&page=1#pid494362 下载)

FileY = 0

Do While True



For x = 1 To HScroll1.Value

ImageY = c_MaxHeight + 1 - FileY

PSet (x, ImageY), RGB(MyPixel(FileY * HScroll1.Value + x).B, MyPixel(FileY * HScroll1.Value + x).G, MyPixel(FileY * HScroll1.Value + x).R)

If FileY * HScroll1.Value + x = UBound(MyPixel) Then

Exit Do

End If

Next x



FileY = FileY + 1

Loop
复制代码现在还有3个未解之谜:
1. 为什么最下边有几个彩色的点?
2. 画图是如何知道图片的宽度的?我的新版的程序对剩余字节也解不出什么有用信息,直接在图片文件里搜索 10H 也找不到。
3. 对59楼的图片,我的程序解出来的是灰度图,而画图确是彩色的,为什么?
[解决办法]
4. 为什么我解出来的最左边要补到最右边才和画图的一样?
[解决办法]

探讨
支持~~~~~~~

[解决办法]
没以前的激情了.....随他吧,嘿嘿.....
[解决办法]
我认为,根本原因是由于该图片的色深为32位造成的,VB的控件不支持色深为32的图片,要想用VB的控件显示,需要降低图片的色深到24或以下.
[解决办法]
我认为,根本原因是由于该图片的色深为32位造成的,VB的控件不支持色深为32的图片,要想用VB的控件显示,需要降低图片的色深到24或以下.
[解决办法]
这个文件根本就不是BITMAP格式。

是矢量图。Windows Metafile (.wmf),文件头格式

typedef struct _WindowsMetaHeader

{

WORD FileType; /* Type of metafile (0=memory, 1=disk) */

WORD HeaderSize; /* Size of header in WORDS (always 9) */

WORD Version; /* Version of Microsoft Windows used */

DWORD FileSize; /* Total size of the metafile in WORDs */

WORD NumOfObjects; /* Number of objects in the file */

DWORD MaxRecordSize; /* The size of largest record in WORDs */

WORD NumOfParams; /* Not Used (always 0) */

} WMFHEAD;


[解决办法]

[解决办法]
还以为矢量图是记录画图的方法,放大后不会模糊,原来只是简单的复制插值算法而已,汗
[解决办法]
探讨
顺便问问,有没有办法直接将点阵信息通过picturebox展示出来呢?

现在才发现,windows自带画图软件还有windows的图片传真查看器真的很厉害,用Photoshop都读取不了这种图片信息。

[解决办法]
用PS全部处理被。
[解决办法]
学习

热点排行