Fix phpunit for crop of image

This commit is contained in:
Laurent Destailleur 2021-05-03 15:56:56 +02:00
parent 5aa9927784
commit 7b706d6fe5
2 changed files with 18 additions and 11 deletions

View File

@ -187,7 +187,7 @@ function dol_imageResizeOrCrop($file, $mode, $newWidth, $newHeight, $src_x = 0,
$imgHeight = $infoImg[1]; // Hauteur de l'image $imgHeight = $infoImg[1]; // Hauteur de l'image
$imgTargetName = ($filetowrite ? $filetowrite : $file); $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 ($mode == 0) { // If resize, we check parameters
if (!empty($filetowrite) && $filetowrite != $file && $newWidth <= 0 && $newHeight <= 0) { 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 // Create empty image for target
if ($infoImgTarget[2] == 1) { if ($newExt == 'gif') {
// Compatibility image GIF // Compatibility image GIF
$imgTarget = imagecreate($newWidth, $newHeight); $imgTarget = imagecreate($newWidth, $newHeight);
} else { } else {
@ -271,22 +271,22 @@ function dol_imageResizeOrCrop($file, $mode, $newWidth, $newHeight, $src_x = 0,
} }
// Set transparent color according to image extension // Set transparent color according to image extension
switch ($infoImgTarget[2]) { switch ($newExt) {
case 1: // Gif case 'gif': // Gif
$trans_colour = imagecolorallocate($imgTarget, 255, 255, 255); // On procede autrement pour le format GIF $trans_colour = imagecolorallocate($imgTarget, 255, 255, 255); // On procede autrement pour le format GIF
imagecolortransparent($imgTarget, $trans_colour); imagecolortransparent($imgTarget, $trans_colour);
break; break;
case 2: // Jpg case 'jpg': // Jpg
$trans_colour = imagecolorallocatealpha($imgTarget, 255, 255, 255, 0); $trans_colour = imagecolorallocatealpha($imgTarget, 255, 255, 255, 0);
break; break;
case 3: // Png case 'png': // Png
imagealphablending($imgTarget, false); // Pour compatibilite sur certain systeme imagealphablending($imgTarget, false); // Pour compatibilite sur certain systeme
$trans_colour = imagecolorallocatealpha($imgTarget, 255, 255, 255, 127); // Keep transparent channel $trans_colour = imagecolorallocatealpha($imgTarget, 255, 255, 255, 127); // Keep transparent channel
break; break;
case 4: // Bmp case 'bmp': // Bmp
$trans_colour = imagecolorallocatealpha($imgTarget, 255, 255, 255, 0); $trans_colour = imagecolorallocatealpha($imgTarget, 255, 255, 255, 0);
break; break;
case 18: // Webp case 'webp': // Webp
$trans_colour = imagecolorallocatealpha($imgTarget, 255, 255, 255, 127); $trans_colour = imagecolorallocatealpha($imgTarget, 255, 255, 255, 127);
break; break;
} }
@ -302,8 +302,6 @@ function dol_imageResizeOrCrop($file, $mode, $newWidth, $newHeight, $src_x = 0,
//$fp = fopen($imgTargetName, "w"); //$fp = fopen($imgTargetName, "w");
//fclose($fp); //fclose($fp);
$newExt = strtolower(pathinfo($imgTargetName, PATHINFO_EXTENSION));
// Create image on disk (overwrite file if exists) // Create image on disk (overwrite file if exists)
switch ($newExt) { switch ($newExt) {
case 'gif': // Gif case 'gif': // Gif

View File

@ -29,6 +29,7 @@ global $conf,$user,$langs,$db;
//require_once 'PHPUnit/Autoload.php'; //require_once 'PHPUnit/Autoload.php';
require_once dirname(__FILE__).'/../../htdocs/master.inc.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/images.lib.php';
require_once dirname(__FILE__).'/../../htdocs/core/lib/files.lib.php';
if (empty($user->id)) { if (empty($user->id)) {
print "Load permissions for admin user nb 1\n"; print "Load permissions for admin user nb 1\n";
@ -164,8 +165,16 @@ class ImagesLibTest extends PHPUnit\Framework\TestCase
$file=dirname(__FILE__).'/img250x20.png'; $file=dirname(__FILE__).'/img250x20.png';
$filetarget=$conf->admin->dir_temp.'/img250x20.jpg'; $filetarget=$conf->admin->dir_temp.'/img250x20.jpg';
dol_delete_file($filetarget);
$result = dol_imageResizeOrCrop($file, 0, 0, 0, 0, 0, $filetarget); $result = dol_imageResizeOrCrop($file, 0, 0, 0, 0, 0, $filetarget);
print __METHOD__." result=".$result."\n"; 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);
} }
} }