mirror of
https://github.com/php/php-src.git
synced 2024-11-23 18:04:36 +08:00
Merge branch 'pull-request/2135'
This commit is contained in:
commit
e0b6ac2976
39
ext/gd/gd.c
39
ext/gd/gd.c
@ -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
|
||||
|
@ -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
|
||||
|
43
ext/gd/tests/imageresolution_jpeg.phpt
Normal file
43
ext/gd/tests/imageresolution_jpeg.phpt
Normal 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');
|
||||
?>
|
42
ext/gd/tests/imageresolution_png.phpt
Normal file
42
ext/gd/tests/imageresolution_png.phpt
Normal 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');
|
||||
?>
|
Loading…
Reference in New Issue
Block a user