没有去深入了解GDI+,我现在的需求主要下面几个:
能够拼接两幅图像,如:20x20两张拼接成40x20或20x40
转换灰度图,二值化
边缘查找,形状查找,色块查找
缩放:临近,双线插值
简便的操作方式是不是直接分析图像结构自己写算法比较好?
PBag中的格式具体怎样不重要了我只提取部分有用的,除了头信息有部分差异,位图点阵数据差不多
现在我参照网上例子BMP文件头结构体Type
Public Type BitMapFileHeader
bfType As Integer '文件类型,BM,Int=19778
bfSize As Long '文件大小
bfreserved1 As Integer '保留,0
bfreserved2 As Integer '保留,0
bfOffBits As Long '数据偏移量
End Type
'位图信息头
Public Type BitMapInfoHeader
biSize As Long '信息头长度,InfoSize,24位BMP是28
biWidth As Long '位图宽度
biHeight As Long '位图高度'通常情况是倒向位图,如果该值为负,则是正向位图,少用,注意兼容
biPlanes As Integer '表示bmp图片的平面属,显然显示器只有一个平面,所以恒等于1
biBitCount As Integer '位深,说明比特数/象素,其值为1、4、8、16、24、或32。Hex(18)=24位
biCompression As Long '压缩类型,BI_RGB=0=没有压缩,BI_RLE8,BI_RLE4,BI_BITFIELDS,BI_JPEG:JPEG格式
biSizeImage As Long '用字节数表示的位图数据的大小。该数必须是4的倍数
biXPelsPerMeter As Long '用像素/米表示的水平分辨率
biYPelsPerMeter As Long '用像素/米表示的垂直分辨率
biClrUsed As Long '颜色索引数(设为0的话,则说明使用所有的调色板项)
biClrImportant As Long '对图像显示有重要影响的颜色索引的数目,如果是0,表示都重要
End Type
'调色板
Public Type RGBquad
rgbBlue As Byte 'Blue
rgbGreen As Byte 'Green
rgbRed As Byte 'Red
rgbReserved As Byte '保留,为0
End Type
Public bf As BitMapFileHeader
Public bl As BitMapInfoHeader
Open CommonDialog1.filename For Binary As #1
Get #1, , bf
Get #1, , bl
Debug.Print "---------------------------------------------Open"
Debug.Print "类型:" & bf.bfType
Debug.Print "大小:" & bf.bfSize
Debug.Print "偏移:" & bf.bfOffBits
Debug.Print "信息头长:" & bl.biSize
Debug.Print "宽度:" & bl.biWidth
Debug.Print "高度:" & bl.biHeight
Debug.Print "位深:" & bl.biBitCount
Debug.Print "压缩:" & bl.biCompression
Debug.Print "数据位数:" & bl.biSizeImage
以上代码需要读取文件,我想从内存变量b() as byte 中读取type结构
如何从Byte()中一次读取进去
就像Open中的Get方法一样