diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2018-02-02 16:36:00 +0100 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2018-02-02 16:36:00 +0100 |
commit | a15130c6bb4fd0b39c565c4150b7e245ad500314 (patch) | |
tree | 7dfb8026406c37a85ed55706f03dcdd5928d297e /src/gd_crop.c | |
parent | 0be86e1926939a98afbd2f3a23c673dfc4df2a7c (diff) | |
download | libgd-a15130c6bb4fd0b39c565c4150b7e245ad500314.tar.gz |
Fix #432: gdImageCrop neglecting transparency
When using `gdImageCopy()` for image cropping, we have to make sure
that it doesn't use alpha blending (the current default), but rather
`gdEffectReplace`. We reset the `alphaBlendingFlag` after finishing
the copy operation.
Diffstat (limited to 'src/gd_crop.c')
-rw-r--r-- | src/gd_crop.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gd_crop.c b/src/gd_crop.c index 1a6a11f..e4c02aa 100644 --- a/src/gd_crop.c +++ b/src/gd_crop.c @@ -48,6 +48,7 @@ static int gdGuessBackgroundColorFromCorners(gdImagePtr im, int *color); BGD_DECLARE(gdImagePtr) gdImageCrop(gdImagePtr src, const gdRect *crop) { gdImagePtr dst; + int alphaBlendingFlag; if (gdImageTrueColor(src)) { dst = gdImageCreateTrueColor(crop->width, crop->height); @@ -55,7 +56,10 @@ BGD_DECLARE(gdImagePtr) gdImageCrop(gdImagePtr src, const gdRect *crop) dst = gdImageCreate(crop->width, crop->height); } if (!dst) return NULL; + alphaBlendingFlag = dst->alphaBlendingFlag; + gdImageAlphaBlending(dst, gdEffectReplace); gdImageCopy(dst, src, 0, 0, crop->x, crop->y, crop->width, crop->height); + gdImageAlphaBlending(dst, alphaBlendingFlag); return dst; } |