From 7b706d6fe5efc649c995bf00e309b0ef2ba8b3de Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 3 May 2021 15:56:56 +0200 Subject: [PATCH] Fix phpunit for crop of image --- htdocs/core/lib/images.lib.php | 18 ++++++++---------- test/phpunit/ImagesLibTest.php | 11 ++++++++++- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/htdocs/core/lib/images.lib.php b/htdocs/core/lib/images.lib.php index 3a0aef1239f..a1a6e97c8d2 100644 --- a/htdocs/core/lib/images.lib.php +++ b/htdocs/core/lib/images.lib.php @@ -187,7 +187,7 @@ function dol_imageResizeOrCrop($file, $mode, $newWidth, $newHeight, $src_x = 0, $imgHeight = $infoImg[1]; // Hauteur de l'image $imgTargetName = ($filetowrite ? $filetowrite : $file); - $infoImgTarget = getimagesize($imgTargetName); // Get data about target image + $newExt = strtolower(pathinfo($imgTargetName, PATHINFO_EXTENSION)); if ($mode == 0) { // If resize, we check parameters if (!empty($filetowrite) && $filetowrite != $file && $newWidth <= 0 && $newHeight <= 0) { @@ -253,7 +253,7 @@ function dol_imageResizeOrCrop($file, $mode, $newWidth, $newHeight, $src_x = 0, } // Create empty image for target - if ($infoImgTarget[2] == 1) { + if ($newExt == 'gif') { // Compatibility image GIF $imgTarget = imagecreate($newWidth, $newHeight); } else { @@ -271,22 +271,22 @@ function dol_imageResizeOrCrop($file, $mode, $newWidth, $newHeight, $src_x = 0, } // Set transparent color according to image extension - switch ($infoImgTarget[2]) { - case 1: // Gif + switch ($newExt) { + case 'gif': // Gif $trans_colour = imagecolorallocate($imgTarget, 255, 255, 255); // On procede autrement pour le format GIF imagecolortransparent($imgTarget, $trans_colour); break; - case 2: // Jpg + case 'jpg': // Jpg $trans_colour = imagecolorallocatealpha($imgTarget, 255, 255, 255, 0); break; - case 3: // Png + case 'png': // Png imagealphablending($imgTarget, false); // Pour compatibilite sur certain systeme $trans_colour = imagecolorallocatealpha($imgTarget, 255, 255, 255, 127); // Keep transparent channel break; - case 4: // Bmp + case 'bmp': // Bmp $trans_colour = imagecolorallocatealpha($imgTarget, 255, 255, 255, 0); break; - case 18: // Webp + case 'webp': // Webp $trans_colour = imagecolorallocatealpha($imgTarget, 255, 255, 255, 127); break; } @@ -302,8 +302,6 @@ function dol_imageResizeOrCrop($file, $mode, $newWidth, $newHeight, $src_x = 0, //$fp = fopen($imgTargetName, "w"); //fclose($fp); - $newExt = strtolower(pathinfo($imgTargetName, PATHINFO_EXTENSION)); - // Create image on disk (overwrite file if exists) switch ($newExt) { case 'gif': // Gif diff --git a/test/phpunit/ImagesLibTest.php b/test/phpunit/ImagesLibTest.php index 4835a8afd76..95704b2a51b 100644 --- a/test/phpunit/ImagesLibTest.php +++ b/test/phpunit/ImagesLibTest.php @@ -29,6 +29,7 @@ global $conf,$user,$langs,$db; //require_once 'PHPUnit/Autoload.php'; require_once dirname(__FILE__).'/../../htdocs/master.inc.php'; require_once dirname(__FILE__).'/../../htdocs/core/lib/images.lib.php'; +require_once dirname(__FILE__).'/../../htdocs/core/lib/files.lib.php'; if (empty($user->id)) { print "Load permissions for admin user nb 1\n"; @@ -164,8 +165,16 @@ class ImagesLibTest extends PHPUnit\Framework\TestCase $file=dirname(__FILE__).'/img250x20.png'; $filetarget=$conf->admin->dir_temp.'/img250x20.jpg'; + dol_delete_file($filetarget); $result = dol_imageResizeOrCrop($file, 0, 0, 0, 0, 0, $filetarget); print __METHOD__." result=".$result."\n"; - $this->assertEquals($filetarget, $result, 'Failed to convert into '.$filetarget); + $this->assertEquals($filetarget, $result, 'Failed to convert PNG '.$file.' into '.$filetarget); + + $file=dirname(__FILE__).'/img250x20.png'; + $filetarget=$conf->admin->dir_temp.'/img250x20.webp'; + dol_delete_file($filetarget); + $result = dol_imageResizeOrCrop($file, 0, 0, 0, 0, 0, $filetarget); + print __METHOD__." result=".$result."\n"; + $this->assertEquals($filetarget, $result, 'Failed to convert PNG '.$file.' into WEBP '.$filetarget); } }