gdImageCopy生成的图像为灰度图像

gdImageCopy生成的图像为灰度图像,c,imagemagick,gd,C,Imagemagick,Gd,虽然我想将一些图像和白色画布与GD合并,但下面的程序使合并后的图像具有灰度 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <gd.h> int main(int argc, char *argv[]) { gdImagePtr src, dst, canvas; FILE *fp, *out; fp = fopen("./image

虽然我想将一些图像和白色画布与GD合并,但下面的程序使合并后的图像具有灰度

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gd.h>

int main(int argc, char *argv[])
{
    gdImagePtr src, dst, canvas;
    FILE *fp, *out;

    fp = fopen("./image.jpg", "r");
    out = fopen("./image_.jpg", "w");

    src = gdImageCreateFromJpeg(fp);

    dst = gdImageCreate(150, 94);

    gdImageCopyResampled(dst, src, 0, 0, 0, 0, 150, 94, 150, 94);

    canvas = gdImageCreate(150, 94);
    int ccolor = gdImageColorAllocateAlpha(canvas, 255, 255, 255, 255);
    gdImageFilledRectangle(canvas, 0, 0, 150, 94, ccolor);
    gdImageCopy(canvas, dst, 0, 0, 0, 0, 150, 94);
    dst = canvas;
    gdImageJpeg(dst, out, 95);

    return 0;
}

您需要通过调用
gdImageCreateTrueColor
方法初始化/分配“非灰度”图像
gdImageCreate
根本不足以满足您的需要

#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
gdImagePtr src、dst、画布;
文件*fp,*out;
fp=fopen(“./image.jpg”,“r”);
out=fopen(“./image_uu.jpg”,“w”);
src=gdImageCreateFromJpeg(fp);
//dst=gdImageCreate(150,94);
dst=GDImageCreateTureColor(150,94);
gdImageCopyResampled(dst、src、0、0、0、150、94、150、94);
//canvas=gdImageCreate(150,94);
canvas=gdImageCreateTrueColor(150,94);
int ccolor=gdImageColorAllocateAlpha(画布,255,255,255);
gdImageFilledRectangle(画布,0,0,150,94,ccolor);
gdImageCopy(画布、dst、0、0、0、150、94);
dst=画布;
gdImageJpeg(dst,out,95);
返回0;
}

您需要通过调用
gdImageCreateTrueColor
方法初始化/分配“非灰度”图像
gdImageCreate
根本不足以满足您的需要

#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
gdImagePtr src、dst、画布;
文件*fp,*out;
fp=fopen(“./image.jpg”,“r”);
out=fopen(“./image_uu.jpg”,“w”);
src=gdImageCreateFromJpeg(fp);
//dst=gdImageCreate(150,94);
dst=GDImageCreateTureColor(150,94);
gdImageCopyResampled(dst、src、0、0、0、150、94、150、94);
//canvas=gdImageCreate(150,94);
canvas=gdImageCreateTrueColor(150,94);
int ccolor=gdImageColorAllocateAlpha(画布,255,255,255);
gdImageFilledRectangle(画布,0,0,150,94,ccolor);
gdImageCopy(画布、dst、0、0、0、150、94);
dst=画布;
gdImageJpeg(dst,out,95);
返回0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wand/MagickWand.h>

int main(int argc, char *argv[])
{
    MagickWand *wand;
    MagickWand *canvas_wand;
    PixelWand  *canvas_color;

    MagickWandGenesis();

    wand         = NewMagickWand();
    canvas_wand  = NewMagickWand();
    canvas_color = NewPixelWand();

    MagickReadImage(wand, "./image.jpg");

    PixelSetRed(canvas_color,   255);
    PixelSetGreen(canvas_color, 255);
    PixelSetBlue(canvas_color,  255);
    PixelSetAlpha(canvas_color, 255);
    MagickNewImage(canvas_wand, 150, 94, canvas_color);
    MagickCompositeImage(canvas_wand, wand, AtopCompositeOp, 0, 0);
    DestroyMagickWand(wand);
    wand = canvas_wand;

    MagickWriteImage(wand, "./image_.jpg");

    DestroyPixelWand(canvas_color);
    DestroyMagickWand(wand);
    MagickWandTerminus();

    return 0;
}
$ gdlib-config --version
2.0.36
$