有一个生成的图片,可以在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的文件头:
[解决办法]
[解决办法]
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
[解决办法]
我又改了一下,这回更加完美了:
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. 为什么我解出来的最左边要补到最右边才和画图的一样?
[解决办法]