本帖最后由 ScriptFans 于 2016-4-9 00:25 编辑
以上图片大小为7×14
首先,据我所知用_GDIPlus_BitmapLockBits得到的图片信息"stride"意为图片每行像素的字节数(不知正确否?)
那么,下面代码按理来说得到的"stride"应该是21(7×3,因为代码中用的是$GDIP_PXF24RGB格式,1个像素占用3个字节)
而运行结果得到的"stride"为24,多了3个字节,不知何故?
又,如果把$GDIP_PXF24RGB格式换为$GDIP_PXF32RGB 格式的话,得到的"stride"为正确的28(7×4,因为$GDIP_PXF32RGB 格式是1个像素占用4个字节)
请熟悉这方面知识的仁兄不吝赐教!!感谢!!
#include <GDIPlus.au3>
Local $hBitmap,$iWidth,$iHeight,$tBitmapData,$iStride
_GDIPlus_Startup()
$hBitmap= _GDIPlus_BitmapCreateFromFile("0.jpg")
$iWidth=_GDIPlus_ImageGetWidth($hBitmap)
$iHeight=_GDIPlus_ImageGetHeight($hBitmap)
$tBitmapData = _GDIPlus_BitmapLockBits($hBitmap,0,0,$iWidth,$iHeight,$GDIP_ILMREAD, $GDIP_PXF24RGB)
$iStride = DllStructGetData($tBitmapData,"stride")
MsgBox(0,"","stride:"&$iStride&@CRLF&"width:"&$iWidth)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
|