图像打包使用FreeImage C ++ Library,所有图像的像素值都没有添加

时间:2018-03-09 02:53:41

标签: c++ image sprite-sheet bin-packing freeimage

我试图使用Bin Packing算法在单个图像中打包多个图像。在单个图像中添加图像的部分,我试图收集所有图像像素值并将它们放在空框架中,但这不起作用。有什么建议吗?

你好编辑了这个问题,

` FIBITMAP *out_bmp = FreeImage_Allocate(4096, 4096, 32, 0, 0, 0);
 BYTE *out_bits = FreeImage_GetBits(out_bmp);
 int out_pitch = FreeImage_GetPitch(out_bmp); 
 // copy all the images to the final one
 for (int i = 0; i < files.size(); i++) {
    string s = "PathToFile" + files[i];
    FIBITMAP* img0 = FreeImage_Load(FreeImage_GetFileType(s.c_str(), 0), s.c_str());
    // make sure the input picture is 32-bits
    if (FreeImage_GetBPP(img0) != 32) {
        FIBITMAP *new_bmp = FreeImage_ConvertTo32Bits(img0);
        FreeImage_Unload(img0);
        img0 = new_bmp;
    }

    int img_pitch = FreeImage_GetPitch(img0);
    BYTE *img_bits = FreeImage_GetBits(img0);
    BYTE *out_bits_ptr = out_bits + out_pitch * 
    FreeImage_GetHeight(img0) + 4 * FreeImage_GetWidth(img0);

    for (int y = 0; y < FreeImage_GetHeight(img0); y += 1) {
        memcpy(out_bits_ptr, img_bits, FreeImage_GetWidth(img0) * 4);
        out_bits_ptr += out_pitch;
        img_bits += img_pitch;
    }
}`

0 个答案:

没有答案