|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2016-03-17 19:33 UTC] mail at mike-gladysch dot de
Description: ------------ When i call getimagesize with $imageinfo argument, it can occur (on some images), that the return value of the function is false. With my test image, $imageinfo contains 3 keys after call, but return value is false. There is no notice, warning or other information. Calling same function without $imageinfo returns correct result. tested PHP-Versions: - 5.5.9 - 7.0.2 Test script: --------------- $info = array(); $sizeInfo = getimagesize($fileName, $info); // returns false, $info not empty $sizeInfo = getimagesize($fileName); // returns correct size information Expected result: ---------------- Better solution should be: - return correct size information like call without $imageinfo - trigger an error or warning, if collecting data for $imageinfo causes an error PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 01:00:01 2025 UTC |
The bug is still ocurring, in all PHP versions, so it should be reopened. Here is a simple test case (script posted, output posted, sample jpg images on Google Drive): Test file (test.php): <?php var_dump(getimagesize('17342761-mobileupload_d5f239209ef5cf6_3426572_20170617_103722.jpg')); var_dump(getimagesize('17342761-mobileupload_d5f239209ef5cf6_3426572_20170617_103722.jpg', $imageinfo)); var_dump($imageinfo); var_dump(getimagesize('17342761-mobileupload_d5f239209ef5cf6_2474645_20170617_110134.jpg')); var_dump(getimagesize('17342761-mobileupload_d5f239209ef5cf6_2474645_20170617_110134.jpg', $imageinfo)); var_dump($imageinfo); ?> Output: $ php test.php test.php:2: array(7) { [0] => int(4032) [1] => int(3024) [2] => int(2) [3] => string(26) "width="4032" height="3024"" 'bits' => int(8) 'channels' => int(3) 'mime' => string(10) "image/jpeg" } test.php:3: bool(false) test.php:4: array(1) { 'APP1' => \000\000\000\000\000\000�\000\000\000\000\000\000� \000\000\00\000\000\000�\000\000\000\000 \000\000\000�\000\000\000\000\000\000\000\000\000\000\000\000\000\000�\000\000\000\000\000\000\000�\000\000\000(\000\000\000\000\000\000\0001\000\000\000\000�\000\000\0002\000\000\000\000�\000\000\000\000\000\000\000\000\000\000i�\000\000\000\000�\000\000\000%�\000\000\000\000�\000\000�\000\000samsung\000SM-G935V\000\000H\000\000\000\"... } test.php:6: array(7) { [0] => int(4032) [1] => int(3024) [2] => int(2) [3] => string(26) "width="4032" height="3024"" 'bits' => int(8) 'channels' => int(3) 'mime' => string(10) "image/jpeg" } test.php:7: bool(false) test.php:8: array(1) { 'APP1' => \000\000\000\000\000\000�\000\000\000\000\000\000� \000\000\00\000\000\000�\000\000\000\000 \000\000\000�\000\000\000\000\000\000\000\000\000\000\000\000\000\000�\000\000\000\000\000\000\000�\000\000\000(\000\000\000\000\000\000\0001\000\000\000\000�\000\000\0002\000\000\000\000�\000\000\000\000\000\000\000\000\000\000i�\000\000\000\000�\000\000\000%�\000\000\000\000�\000\000�\000\000samsung\000SM-G935V\000\000H\000\000\000\"... } JPG images to test with: https://drive.google.com/file/d/0B9eJ8bp6Y-f0c3N2b0hycDBPaFU/view?usp=sharing https://drive.google.com/file/d/0B9eJ8bp6Y-f0WFhaTDBLSXdWTlk/view?usp=sharing One workaround is to use exif_read_data() in this case, i.e. the code would become: <?php var_dump(getimagesize('17342761-mobileupload_d5f239209ef5cf6_3426572_20170617_103722.jpg')); getimagesize('17342761-mobileupload_d5f239209ef5cf6_3426572_20170617_103722.jpg', $imageinfo); $exif = exif_read_data('17342761-mobileupload_d5f239209ef5cf6_3426572_20170617_103722.jpg', 'IFD0'); if ($exif !== false) { var_dump($exif); } else { var_dump(getimagesize('17342761-mobileupload_d5f239209ef5cf6_3426572_20170617_103722.jpg', $imageinfo)); var_dump($imageinfo); } var_dump(getimagesize('img130912-2.1.jpg')); $exif = exif_read_data('img130912-2.1.jpg', 'IFD0'); if ($exif !== false) { var_dump($exif); } else { var_dump(getimagesize('img130912-2.1.jpg', $imageinfo)); var_dump($imageinfo); } ?> but this is clearly a bug, either in PHP or in the underlying gd layer.