我必须将不是 DWORD 对齐的原始像素数据(行 *col = 479 * 638)转换为 DWORD 对齐的位图数据。我几乎没有疑问。
1)当我说 d 字对齐时,它是关于分配 dword 对齐的总内存还是关于使宽度 DWORD 对齐?
2)说如果它是关于使实际宽度为 DWORD 对齐,那么由于 DWORD 对齐,我在末尾添加了额外的 2 个字节以使宽度 = 640。但是当我从源到目标进行 memcopy 时,它会留下深黑色底部的线。但我不想要这些暗线,因为它会与实际图像产生混淆。那么我怎样才能避免最后的这条黑线呢?
为了解决这个问题,我假设这是关于分配的总内存,它是双字对齐的。我分配了那么多双字对齐的内存。
bitmapData = (LPBYTE) GlobalAlloc(GMEM_FIXED, bmiHeader->biSizeImage);
在哪里 bmiHeader->biSizeImage = nrows * dowrdalignedwidth * BPP.
在做实际的 memcopy 时,我正在复制和写入rows*cols*BPP
. 这个对吗?