Thanks Richard, Renamed and attached.
-----Original Message----- From: Richard Quadling [mailto:rquadl...@gmail.com] Sent: 08 July 2011 17:13 To: DIXON P. Cc: internals@lists.php.net Subject: Re: [PHP-DEV] [PATCH] getimagesize - return named keys for width, height, type and attributes On 8 July 2011 17:10, DIXON P. <paul.di...@durham.ac.uk> wrote: > Hi, > > I've attached a patch ... Rename as .txt to get through the mailing list s/w. -- Richard Quadling Twitter : EE : Zend : PHPDoc @RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY : bit.ly/lFnVea
diff --git a/ext/standard/image.c b/ext/standard/image.c index 5383667..004dc8d 100644 --- a/ext/standard/image.c +++ b/ext/standard/image.c @@ -1364,8 +1364,10 @@ static void php_getimagesize_from_stream(php_stream *stream, zval **info, INTERN add_index_long(return_value, 0, result->width); add_index_long(return_value, 1, result->height); add_index_long(return_value, 2, itype); + spprintf(&temp, 0, "width=\"%d\" height=\"%d\"", result->width, result->height); add_index_string(return_value, 3, temp, 0); + add_assoc_string(return_value, "attributes", temp, 1); if (result->bits != 0) { add_assoc_long(return_value, "bits", result->bits); @@ -1373,7 +1375,12 @@ static void php_getimagesize_from_stream(php_stream *stream, zval **info, INTERN if (result->channels != 0) { add_assoc_long(return_value, "channels", result->channels); } + + add_assoc_long(return_value, "height", result->height); add_assoc_string(return_value, "mime", (char*)php_image_type_to_mime_type(itype), 1); + add_assoc_long(return_value, "type", itype); + add_assoc_long(return_value, "width", result->width); + efree(result); } else { RETURN_FALSE; diff --git a/ext/standard/tests/image/bug13213.phpt b/ext/standard/tests/image/bug13213.phpt index c97b701..530cb99 100644 --- a/ext/standard/tests/image/bug13213.phpt +++ b/ext/standard/tests/image/bug13213.phpt @@ -5,7 +5,7 @@ Bug #13213 (GetImageSize and wrong JPEG Comments) var_dump(GetImageSize(dirname(__FILE__).'/bug13213.jpg')); ?> --EXPECT-- -array(7) { +array(11) { [0]=> int(1) [1]=> @@ -14,10 +14,18 @@ array(7) { int(2) [3]=> string(20) "width="1" height="1"" + ["attributes"]=> + string(20) "width="1" height="1"" ["bits"]=> int(8) ["channels"]=> int(3) + ["height"]=> + int(1) ["mime"]=> string(10) "image/jpeg" + ["type"]=> + int(2) + ["width"]=> + int(1) } diff --git a/ext/standard/tests/image/getimagesize.phpt b/ext/standard/tests/image/getimagesize.phpt index ab79c9c..b11a5f2 100644 --- a/ext/standard/tests/image/getimagesize.phpt +++ b/ext/standard/tests/image/getimagesize.phpt @@ -25,7 +25,7 @@ GetImageSize() --EXPECT-- array(11) { ["test1pix.bmp"]=> - array(6) { + array(10) { [0]=> int(1) [1]=> @@ -34,13 +34,21 @@ array(11) { int(6) [3]=> string(20) "width="1" height="1"" + ["attributes"]=> + string(20) "width="1" height="1"" ["bits"]=> int(24) + ["height"]=> + int(1) ["mime"]=> string(14) "image/x-ms-bmp" + ["type"]=> + int(6) + ["width"]=> + int(1) } ["test1pix.jp2"]=> - array(7) { + array(11) { [0]=> int(1) [1]=> @@ -49,15 +57,23 @@ array(11) { int(10) [3]=> string(20) "width="1" height="1"" + ["attributes"]=> + string(20) "width="1" height="1"" ["bits"]=> int(8) ["channels"]=> int(3) + ["height"]=> + int(1) ["mime"]=> string(9) "image/jp2" + ["type"]=> + int(10) + ["width"]=> + int(1) } ["test1pix.jpc"]=> - array(7) { + array(11) { [0]=> int(1) [1]=> @@ -66,15 +82,23 @@ array(11) { int(9) [3]=> string(20) "width="1" height="1"" + ["attributes"]=> + string(20) "width="1" height="1"" ["bits"]=> int(8) ["channels"]=> int(3) + ["height"]=> + int(1) ["mime"]=> string(24) "application/octet-stream" + ["type"]=> + int(9) + ["width"]=> + int(1) } ["test1pix.jpg"]=> - array(7) { + array(11) { [0]=> int(1) [1]=> @@ -83,15 +107,23 @@ array(11) { int(2) [3]=> string(20) "width="1" height="1"" + ["attributes"]=> + string(20) "width="1" height="1"" ["bits"]=> int(8) ["channels"]=> int(3) + ["height"]=> + int(1) ["mime"]=> string(10) "image/jpeg" + ["type"]=> + int(2) + ["width"]=> + int(1) } ["test2pix.gif"]=> - array(7) { + array(11) { [0]=> int(2) [1]=> @@ -100,15 +132,23 @@ array(11) { int(1) [3]=> string(20) "width="2" height="1"" + ["attributes"]=> + string(20) "width="2" height="1"" ["bits"]=> int(1) ["channels"]=> int(3) + ["height"]=> + int(1) ["mime"]=> string(9) "image/gif" + ["type"]=> + int(1) + ["width"]=> + int(2) } ["test4pix.gif"]=> - array(7) { + array(11) { [0]=> int(4) [1]=> @@ -117,15 +157,23 @@ array(11) { int(1) [3]=> string(20) "width="4" height="1"" + ["attributes"]=> + string(20) "width="4" height="1"" ["bits"]=> int(2) ["channels"]=> int(3) + ["height"]=> + int(1) ["mime"]=> string(9) "image/gif" + ["type"]=> + int(1) + ["width"]=> + int(4) } ["test4pix.iff"]=> - array(6) { + array(10) { [0]=> int(4) [1]=> @@ -134,13 +182,21 @@ array(11) { int(14) [3]=> string(20) "width="4" height="1"" + ["attributes"]=> + string(20) "width="4" height="1"" ["bits"]=> int(4) + ["height"]=> + int(1) ["mime"]=> string(9) "image/iff" + ["type"]=> + int(14) + ["width"]=> + int(4) } ["test4pix.png"]=> - array(6) { + array(10) { [0]=> int(4) [1]=> @@ -149,13 +205,21 @@ array(11) { int(3) [3]=> string(20) "width="4" height="1"" + ["attributes"]=> + string(20) "width="4" height="1"" ["bits"]=> int(4) + ["height"]=> + int(1) ["mime"]=> string(9) "image/png" + ["type"]=> + int(3) + ["width"]=> + int(4) } ["test4pix.psd"]=> - array(5) { + array(9) { [0]=> int(4) [1]=> @@ -164,11 +228,19 @@ array(11) { int(5) [3]=> string(20) "width="4" height="1"" + ["attributes"]=> + string(20) "width="4" height="1"" + ["height"]=> + int(1) ["mime"]=> string(9) "image/psd" + ["type"]=> + int(5) + ["width"]=> + int(4) } ["test4pix.swf"]=> - array(5) { + array(9) { [0]=> int(550) [1]=> @@ -177,11 +249,19 @@ array(11) { int(4) [3]=> string(24) "width="550" height="400"" + ["attributes"]=> + string(24) "width="550" height="400"" + ["height"]=> + int(400) ["mime"]=> string(29) "application/x-shockwave-flash" + ["type"]=> + int(4) + ["width"]=> + int(550) } ["test4pix.tif"]=> - array(5) { + array(9) { [0]=> int(4) [1]=> @@ -190,7 +270,15 @@ array(11) { int(7) [3]=> string(20) "width="4" height="1"" + ["attributes"]=> + string(20) "width="4" height="1"" + ["height"]=> + int(1) ["mime"]=> string(10) "image/tiff" + ["type"]=> + int(7) + ["width"]=> + int(4) } } diff --git a/ext/standard/tests/image/getimagesize_246x247.phpt b/ext/standard/tests/image/getimagesize_246x247.phpt index e5a0aea..f6f353e 100644 --- a/ext/standard/tests/image/getimagesize_246x247.phpt +++ b/ext/standard/tests/image/getimagesize_246x247.phpt @@ -25,7 +25,7 @@ GetImageSize() with 246x247 pixels --EXPECT-- array(1) { ["246x247.png"]=> - array(6) { + array(10) { [0]=> int(246) [1]=> @@ -34,9 +34,17 @@ array(1) { int(3) [3]=> string(24) "width="246" height="247"" + ["attributes"]=> + string(24) "width="246" height="247"" ["bits"]=> int(4) + ["height"]=> + int(247) ["mime"]=> string(9) "image/png" + ["type"]=> + int(3) + ["width"]=> + int(246) } } diff --git a/ext/standard/tests/image/getimagesize_384x385.phpt b/ext/standard/tests/image/getimagesize_384x385.phpt index 0051df7..37ad4fa 100644 --- a/ext/standard/tests/image/getimagesize_384x385.phpt +++ b/ext/standard/tests/image/getimagesize_384x385.phpt @@ -25,7 +25,7 @@ GetImageSize() with 384x385 pixels --EXPECT-- array(1) { ["384x385.png"]=> - array(6) { + array(10) { [0]=> int(384) [1]=> @@ -34,9 +34,17 @@ array(1) { int(3) [3]=> string(24) "width="384" height="385"" + ["attributes"]=> + string(24) "width="384" height="385"" ["bits"]=> int(1) + ["height"]=> + int(385) ["mime"]=> string(9) "image/png" + ["type"]=> + int(3) + ["width"]=> + int(384) } } diff --git a/ext/standard/tests/image/getimagesize_basic.phpt b/ext/standard/tests/image/getimagesize_basic.phpt index 4d47225..57bd7c4 100644 --- a/ext/standard/tests/image/getimagesize_basic.phpt +++ b/ext/standard/tests/image/getimagesize_basic.phpt @@ -50,7 +50,7 @@ foreach($imagetype_filenames as $key => $filename) { *** Testing getimagesize() : basic functionality *** -- GIF image file (200x100.gif) -- -array(7) { +array(11) { [0]=> int(200) [1]=> @@ -59,18 +59,26 @@ array(7) { int(1) [3]=> string(24) "width="200" height="100"" + ["attributes"]=> + string(24) "width="200" height="100"" ["bits"]=> int(8) ["channels"]=> int(3) + ["height"]=> + int(100) ["mime"]=> string(9) "image/gif" + ["type"]=> + int(1) + ["width"]=> + int(200) } array(0) { } -- JPEG image file (200x100.jpg) -- -array(7) { +array(11) { [0]=> int(200) [1]=> @@ -79,12 +87,20 @@ array(7) { int(2) [3]=> string(24) "width="200" height="100"" + ["attributes"]=> + string(24) "width="200" height="100"" ["bits"]=> int(8) ["channels"]=> int(3) + ["height"]=> + int(100) ["mime"]=> string(10) "image/jpeg" + ["type"]=> + int(2) + ["width"]=> + int(200) } array(1) { ["APP0"]=> @@ -92,7 +108,7 @@ array(1) { } -- PNG image file (200x100.png) -- -array(6) { +array(10) { [0]=> int(200) [1]=> @@ -101,16 +117,24 @@ array(6) { int(3) [3]=> string(24) "width="200" height="100"" + ["attributes"]=> + string(24) "width="200" height="100"" ["bits"]=> int(8) + ["height"]=> + int(100) ["mime"]=> string(9) "image/png" + ["type"]=> + int(3) + ["width"]=> + int(200) } array(0) { } -- SWF image file (200x100.swf) -- -array(5) { +array(9) { [0]=> int(200) [1]=> @@ -119,14 +143,22 @@ array(5) { int(4) [3]=> string(24) "width="200" height="100"" + ["attributes"]=> + string(24) "width="200" height="100"" + ["height"]=> + int(100) ["mime"]=> string(29) "application/x-shockwave-flash" + ["type"]=> + int(4) + ["width"]=> + int(200) } array(0) { } -- BMP image file (200x100.bmp) -- -array(6) { +array(10) { [0]=> int(200) [1]=> @@ -135,16 +167,24 @@ array(6) { int(6) [3]=> string(24) "width="200" height="100"" + ["attributes"]=> + string(24) "width="200" height="100"" ["bits"]=> int(24) + ["height"]=> + int(100) ["mime"]=> string(14) "image/x-ms-bmp" + ["type"]=> + int(6) + ["width"]=> + int(200) } array(0) { } -- TIFF intel byte order image file (200x100.tif) -- -array(5) { +array(9) { [0]=> int(200) [1]=> @@ -153,14 +193,22 @@ array(5) { int(7) [3]=> string(24) "width="200" height="100"" + ["attributes"]=> + string(24) "width="200" height="100"" + ["height"]=> + int(100) ["mime"]=> string(10) "image/tiff" + ["type"]=> + int(7) + ["width"]=> + int(200) } array(0) { } -- JPC image file (test1pix.jpc) -- -array(7) { +array(11) { [0]=> int(1) [1]=> @@ -169,18 +217,26 @@ array(7) { int(9) [3]=> string(20) "width="1" height="1"" + ["attributes"]=> + string(20) "width="1" height="1"" ["bits"]=> int(8) ["channels"]=> int(3) + ["height"]=> + int(1) ["mime"]=> string(24) "application/octet-stream" + ["type"]=> + int(9) + ["width"]=> + int(1) } array(0) { } -- JP2 image file (test1pix.jp2) -- -array(7) { +array(11) { [0]=> int(1) [1]=> @@ -189,18 +245,26 @@ array(7) { int(10) [3]=> string(20) "width="1" height="1"" + ["attributes"]=> + string(20) "width="1" height="1"" ["bits"]=> int(8) ["channels"]=> int(3) + ["height"]=> + int(1) ["mime"]=> string(9) "image/jp2" + ["type"]=> + int(10) + ["width"]=> + int(1) } array(0) { } -- IFF image file (test4pix.iff) -- -array(6) { +array(10) { [0]=> int(4) [1]=> @@ -209,10 +273,18 @@ array(6) { int(14) [3]=> string(20) "width="4" height="1"" + ["attributes"]=> + string(20) "width="4" height="1"" ["bits"]=> int(4) + ["height"]=> + int(1) ["mime"]=> string(9) "image/iff" + ["type"]=> + int(14) + ["width"]=> + int(4) } array(0) { } diff --git a/ext/standard/tests/image/getimagesize_swc.phpt b/ext/standard/tests/image/getimagesize_swc.phpt index f8c7449..1f60863 100644 --- a/ext/standard/tests/image/getimagesize_swc.phpt +++ b/ext/standard/tests/image/getimagesize_swc.phpt @@ -11,7 +11,7 @@ GetImageSize() for compressed swf files var_dump(getimagesize(dirname(__FILE__) . "/test13pix.swf")); ?> --EXPECT-- -array(5) { +array(9) { [0]=> int(550) [1]=> @@ -20,6 +20,14 @@ array(5) { int(13) [3]=> string(24) "width="550" height="400"" + ["attributes"]=> + string(24) "width="550" height="400"" + ["height"]=> + int(400) ["mime"]=> string(29) "application/x-shockwave-flash" + ["type"]=> + int(13) + ["width"]=> + int(550) } diff --git a/ext/standard/tests/image/getimagesize_tif_mm.phpt b/ext/standard/tests/image/getimagesize_tif_mm.phpt index 8bc88fd..0d2e3ac 100644 --- a/ext/standard/tests/image/getimagesize_tif_mm.phpt +++ b/ext/standard/tests/image/getimagesize_tif_mm.phpt @@ -22,7 +22,7 @@ var_dump($arr); ===DONE=== --EXPECT-- *** Testing getimagesize() : tiff_mm format *** -array(5) { +array(9) { [0]=> int(2) [1]=> @@ -31,8 +31,16 @@ array(5) { int(8) [3]=> string(20) "width="2" height="2"" + ["attributes"]=> + string(20) "width="2" height="2"" + ["height"]=> + int(2) ["mime"]=> string(10) "image/tiff" + ["type"]=> + int(8) + ["width"]=> + int(2) } array(0) { } diff --git a/ext/standard/tests/image/getimagesize_variation4.phpt b/ext/standard/tests/image/getimagesize_variation4.phpt index 8fa690c..650e8cf 100644 --- a/ext/standard/tests/image/getimagesize_variation4.phpt +++ b/ext/standard/tests/image/getimagesize_variation4.phpt @@ -21,7 +21,7 @@ var_dump( $info ); ===DONE=== --EXPECTF-- *** Testing getimagesize() : variation *** -array(5) { +array(9) { [0]=> int(550) [1]=> @@ -30,8 +30,16 @@ array(5) { int(13) [3]=> string(24) "width="550" height="400"" + ["attributes"]=> + string(24) "width="550" height="400"" + ["height"]=> + int(400) ["mime"]=> string(29) "application/x-shockwave-flash" + ["type"]=> + int(13) + ["width"]=> + int(550) } array(0) { } diff --git a/ext/standard/tests/image/getimagesize_variation_005.phpt b/ext/standard/tests/image/getimagesize_variation_005.phpt index 6f0ad8f..7546bb4 100644 --- a/ext/standard/tests/image/getimagesize_variation_005.phpt +++ b/ext/standard/tests/image/getimagesize_variation_005.phpt @@ -21,7 +21,7 @@ var_dump( $info ); ===DONE=== --EXPECTF-- *** Testing getimagesize() : basic functionality *** -array(5) { +array(9) { [0]=> int(550) [1]=> @@ -30,8 +30,16 @@ array(5) { int(13) [3]=> string(24) "width="550" height="400"" + ["attributes"]=> + string(24) "width="550" height="400"" + ["height"]=> + int(400) ["mime"]=> string(29) "application/x-shockwave-flash" + ["type"]=> + int(13) + ["width"]=> + int(550) } array(0) { } diff --git a/ext/standard/tests/image/getimagesize_wbmp.phpt b/ext/standard/tests/image/getimagesize_wbmp.phpt index 503b5f1..244b927 100644 --- a/ext/standard/tests/image/getimagesize_wbmp.phpt +++ b/ext/standard/tests/image/getimagesize_wbmp.phpt @@ -22,7 +22,7 @@ var_dump($arr); ===DONE=== --EXPECT-- *** Testing getimagesize() : wbmp format *** -array(5) { +array(9) { [0]=> int(75) [1]=> @@ -31,8 +31,16 @@ array(5) { int(15) [3]=> string(22) "width="75" height="50"" + ["attributes"]=> + string(22) "width="75" height="50"" + ["height"]=> + int(50) ["mime"]=> string(18) "image/vnd.wap.wbmp" + ["type"]=> + int(15) + ["width"]=> + int(75) } array(0) { } diff --git a/ext/standard/tests/image/getimagesize_xbm.phpt b/ext/standard/tests/image/getimagesize_xbm.phpt index 53406a8..6d10fbd 100644 --- a/ext/standard/tests/image/getimagesize_xbm.phpt +++ b/ext/standard/tests/image/getimagesize_xbm.phpt @@ -22,7 +22,7 @@ var_dump($arr); ===DONE=== --EXPECT-- *** Testing getimagesize() : xbm format *** -array(5) { +array(9) { [0]=> int(75) [1]=> @@ -31,8 +31,16 @@ array(5) { int(16) [3]=> string(22) "width="75" height="50"" + ["attributes"]=> + string(22) "width="75" height="50"" + ["height"]=> + int(50) ["mime"]=> string(9) "image/xbm" + ["type"]=> + int(16) + ["width"]=> + int(75) } array(0) { } diff --git a/ext/standard/tests/image/getimagesizefromstring1.phpt b/ext/standard/tests/image/getimagesizefromstring1.phpt index df75be5..52f2db6 100644 --- a/ext/standard/tests/image/getimagesizefromstring1.phpt +++ b/ext/standard/tests/image/getimagesizefromstring1.phpt @@ -14,7 +14,7 @@ var_dump($i1); var_dump($i2); ?> --EXPECT-- -array(7) { +array(11) { [0]=> int(120) [1]=> @@ -23,14 +23,22 @@ array(7) { int(1) [3]=> string(23) "width="120" height="67"" + ["attributes"]=> + string(23) "width="120" height="67"" ["bits"]=> int(7) ["channels"]=> int(3) + ["height"]=> + int(67) ["mime"]=> string(9) "image/gif" + ["type"]=> + int(1) + ["width"]=> + int(120) } -array(7) { +array(11) { [0]=> int(120) [1]=> @@ -39,11 +47,19 @@ array(7) { int(1) [3]=> string(23) "width="120" height="67"" + ["attributes"]=> + string(23) "width="120" height="67"" ["bits"]=> int(7) ["channels"]=> int(3) + ["height"]=> + int(67) ["mime"]=> string(9) "image/gif" + ["type"]=> + int(1) + ["width"]=> + int(120) }
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php