Хотя я хочу сшить изображение и белый холст с помощью GD, следующая программа делает слияние изображений в оттенках серого.Изображение gdImageCopy - это оттенки серого
#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;
}
image.jpg
image_.jpg
В противоположность этому, следующая программа с ImageMagick делает не-изображение в оттенках серого.
#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;
}
Есть ли способ сделать изображение без оттенков серого с помощью GD?
FYI
$ gdlib-config --version
2.0.36
$