summaryrefslogtreecommitdiff
path: root/src/gd_crop.c
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2018-02-02 16:36:00 +0100
committerChristoph M. Becker <cmbecker69@gmx.de>2018-02-02 16:36:00 +0100
commita15130c6bb4fd0b39c565c4150b7e245ad500314 (patch)
tree7dfb8026406c37a85ed55706f03dcdd5928d297e /src/gd_crop.c
parent0be86e1926939a98afbd2f3a23c673dfc4df2a7c (diff)
downloadlibgd-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.c4
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;
}