{
zval *IM;
gdImagePtr im;
- gdImagePtr im_scaled;
+ gdImagePtr im_scaled = NULL;
int new_width, new_height;
long tmp_w, tmp_h=-1, tmp_m = GD_BILINEAR_FIXED;
gdInterpolationMethod method;
new_height = tmp_h;
ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
- im_scaled = gdImageScale(im, new_width, new_height);
- goto finish;
- switch (method) {
- case GD_NEAREST_NEIGHBOUR:
- im_scaled = gdImageScaleNearestNeighbour(im, new_width, new_height);
- break;
-
- case GD_BILINEAR_FIXED:
- im_scaled = gdImageScaleBilinear(im, new_width, new_height);
- break;
-
- case GD_BICUBIC:
- im_scaled = gdImageScaleBicubicFixed(im, new_width, new_height);
- break;
-
- case GD_BICUBIC_FIXED:
- im_scaled = gdImageScaleBicubicFixed(im, new_width, new_height);
- break;
-
- default:
- im_scaled = gdImageScaleTwoPass(im, im->sx, im->sy, new_width, new_height);
- break;
+ if (gdImageSetInterpolationMethod(im, method)) {
+ im_scaled = gdImageScale(im, new_width, new_height);
}
-finish:
+
if (im_scaled == NULL) {
RETURN_FALSE;
} else {