Merge branch 'pull-request/2135'

This commit is contained in:
Joe Watkins 2016-10-20 05:33:12 +01:00
commit e0b6ac2976
4 changed files with 126 additions and 0 deletions

View File

@ -836,6 +836,12 @@ ZEND_BEGIN_ARG_INFO(arginfo_imagesetinterpolation, 0)
ZEND_ARG_INFO(0, method)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_imageresolution, 0, 0, 1)
ZEND_ARG_INFO(0, im)
ZEND_ARG_INFO(0, res_x)
ZEND_ARG_INFO(0, res_y)
ZEND_END_ARG_INFO()
/* }}} */
/* {{{ gd_functions[]
@ -981,6 +987,8 @@ const zend_function_entry gd_functions[] = {
PHP_FE(imagefilter, arginfo_imagefilter)
PHP_FE(imageconvolution, arginfo_imageconvolution)
PHP_FE(imageresolution, arginfo_imageresolution)
PHP_FE_END
};
/* }}} */
@ -5066,6 +5074,37 @@ PHP_FUNCTION(imagesetinterpolation)
}
/* }}} */
/* {{{ proto array imageresolution(resource im [, res_x, [res_y]])
Get or set the resolution of the image in DPI. */
PHP_FUNCTION(imageresolution)
{
zval *IM;
gdImagePtr im;
zend_long res_x = GD_RESOLUTION, res_y = GD_RESOLUTION;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|ll", &IM, &res_x, &res_y) == FAILURE) {
return;
}
if ((im = (gdImagePtr)zend_fetch_resource(Z_RES_P(IM), "Image", le_gd)) == NULL) {
RETURN_FALSE;
}
switch (ZEND_NUM_ARGS()) {
case 3:
gdImageSetResolution(im, res_x, res_y);
RETURN_TRUE;
case 2:
gdImageSetResolution(im, res_x, res_x);
RETURN_TRUE;
default:
array_init(return_value);
add_next_index_long(return_value, gdImageResolutionX(im));
add_next_index_long(return_value, gdImageResolutionY(im));
}
}
/* }}} */
/*
* Local variables:
* tab-width: 4

View File

@ -199,6 +199,8 @@ PHP_FUNCTION(imagexbm);
PHP_FUNCTION(imagefilter);
PHP_FUNCTION(imageconvolution);
PHP_FUNCTION(imageresolution);
PHP_GD_API int phpi_get_le_gd(void);
#else

View File

@ -0,0 +1,43 @@
--TEST--
Set and get image resolution of JPEG images
--SKIPIF--
<?php
if (!extension_loaded('gd')) die('skip gd extension not available');
if (!(imagetypes() & IMG_JPEG)) die('skip JPEG support not available');
?>
--FILE--
<?php
$filename = __DIR__ . DIRECTORY_SEPARATOR . 'imageresolution_jpeg.jpeg';
$exp = imagecreate(100, 100);
imagecolorallocate($exp, 255, 0, 0);
imageresolution($exp, 71);
imagejpeg($exp, $filename);
$act = imagecreatefromjpeg($filename);
var_dump(imageresolution($act));
imageresolution($exp, 71, 299);
imagejpeg($exp, $filename);
$act = imagecreatefromjpeg($filename);
var_dump(imageresolution($act));
?>
===DONE===
--EXPECT--
array(2) {
[0]=>
int(71)
[1]=>
int(71)
}
array(2) {
[0]=>
int(71)
[1]=>
int(299)
}
===DONE===
--CLEAN--
<?php
@unlink(__DIR__ . DIRECTORY_SEPARATOR . 'imageresolution_jpeg.jpeg');
?>

View File

@ -0,0 +1,42 @@
--TEST--
Set and get image resolution of PNG images
--SKIPIF--
<?php
if (!extension_loaded('gd')) die('skip gd extension not available');
?>
--FILE--
<?php
$filename = __DIR__ . DIRECTORY_SEPARATOR . 'imageresolution_png.png';
$exp = imagecreate(100, 100);
imagecolorallocate($exp, 255, 0, 0);
imageresolution($exp, 71);
imagepng($exp, $filename);
$act = imagecreatefrompng($filename);
var_dump(imageresolution($act));
imageresolution($exp, 71, 299);
imagepng($exp, $filename);
$act = imagecreatefrompng($filename);
var_dump(imageresolution($act));
?>
===DONE===
--EXPECT--
array(2) {
[0]=>
int(71)
[1]=>
int(71)
}
array(2) {
[0]=>
int(71)
[1]=>
int(299)
}
===DONE===
--CLEAN--
<?php
@unlink(__DIR__ . DIRECTORY_SEPARATOR . 'imageresolution_png.png');
?>