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
$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

View File

@ -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);
}
}