From 2728e6f01798b1146b41587d38bf84cdf9988d17 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 15 Oct 2014 19:13:25 +0200 Subject: [PATCH] Fixed Bug #65171 imagescale() fails Third param (height) is set as optional, but default value = -1 is incorrect Compute correct height to preserve ratio. --- ext/gd/gd.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/ext/gd/gd.c b/ext/gd/gd.c index cbc7219e37..f86dad58dc 100644 --- a/ext/gd/gd.c +++ b/ext/gd/gd.c @@ -5110,11 +5110,23 @@ PHP_FUNCTION(imagescale) return; } method = tmp_m; - new_width = tmp_w; - new_height = tmp_h; ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd); + if (tmp_h < 0) { + /* preserve ratio */ + long src_x, src_y; + + src_x = gdImageSX(im); + src_y = gdImageSY(im); + if (src_x) { + tmp_h = tmp_w * src_y / src_x; + } + } + + new_width = tmp_w; + new_height = tmp_h; + if (gdImageSetInterpolationMethod(im, method)) { im_scaled = gdImageScale(im, new_width, new_height); } -- 2.40.0