Implement imagick command fix

`pwg_image::get_ext_imagick_command()` get the imagick command (convert or magick)
replace all convert with pwg_image::get_ext_imagick_command()
This commit is contained in:
RushLana
2025-05-19 09:09:10 +02:00
committed by Pierrick Le Gall
parent 66df209632
commit 3293b329e9
4 changed files with 33 additions and 9 deletions

View File

@@ -3727,7 +3727,7 @@ function get_graphics_library()
switch (pwg_image::get_library())
{
case 'ext_imagick':
exec($conf['ext_imagick_dir'].'convert -version', $returnarray);
exec($conf['ext_imagick_dir'].pwg_image::get_ext_imagick_command().' -version', $returnarray);
if (preg_match('/Version: ImageMagick (\d+\.\d+\.\d+-?\d*)/', $returnarray[0], $match))
{
$library.= '/'.$match[1];

View File

@@ -590,7 +590,7 @@ function upload_file_pdf($representative_ext, $file_path)
$representative_file_path = original_to_representative($file_path, $ext);
prepare_directory(dirname($representative_file_path));
$exec = $conf['ext_imagick_dir'].'convert';
$exec = $conf['ext_imagick_dir'].pwg_image::get_ext_imagick_command();
if ('jpg' == $ext)
{
$exec.= ' -quality '.$jpg_quality;
@@ -639,7 +639,7 @@ function upload_file_heic($representative_ext, $file_path)
list($w,$h) = get_optimal_dimensions_for_representative();
$exec = $conf['ext_imagick_dir'].'convert';
$exec = $conf['ext_imagick_dir'].pwg_image::get_ext_imagick_command();
$exec.= ' -sampling-factor 4:2:0 -quality 85 -interlace JPEG -colorspace sRGB -auto-orient +repage -resize "'.$w.'x'.$h.'>"';
$exec.= ' "'.realpath($file_path).'"';
$exec.= ' "'.$representative_file_path.'"';
@@ -689,7 +689,7 @@ function upload_file_tiff($representative_ext, $file_path)
prepare_directory(dirname($representative_file_path));
$exec = $conf['ext_imagick_dir'].'convert';
$exec = $conf['ext_imagick_dir'].pwg_image::get_ext_imagick_command();
if ('jpg' == $conf['tiff_representative_ext'])
{
@@ -836,7 +836,7 @@ function upload_file_psd($representative_ext, $file_path)
prepare_directory(dirname($representative_file_path));
$exec = $conf['ext_imagick_dir'].'convert';
$exec = $conf['ext_imagick_dir'].pwg_image::get_ext_imagick_command();
$exec .= ' "'.realpath($file_path).'"';
@@ -898,7 +898,7 @@ function upload_file_eps($representative_ext, $file_path)
// convert -density 300 image.eps -resize 2048x2048 image.png
$exec = $conf['ext_imagick_dir'].'convert';
$exec = $conf['ext_imagick_dir'].pwg_image::get_ext_imagick_command();
$exec.= ' -density 300';
$exec.= ' "'.realpath($file_path).'"';
$exec.= ' -resize 2048x2048';

View File

@@ -368,6 +368,29 @@ class pwg_image
return (extension_loaded('imagick') and class_exists('Imagick'));
}
static function get_ext_imagick_command()
{
global $page, $conf;
if (!isset($page['ext_imagick_command']))
{
$retval=null;
$cmd_out=null;
// check if magick is in path
exec('command -v '.$conf['ext_imagick_dir'].'magick', $cmd_out , $retval );
if (0 == $retval)
{
$page['ext_imagick_command'] = $cmd_out[0];
}
else
{
$page['ext_imagick_command'] = $conf['ext_imagick_dir'].'convert';
}
}
return $page['ext_imagick_command'];
}
static function is_ext_imagick()
{
global $conf;
@@ -376,7 +399,8 @@ class pwg_image
{
return false;
}
@exec($conf['ext_imagick_dir'].'convert -version', $returnarray);
@exec($conf['ext_imagick_dir'].pwg_image::get_ext_imagick_command().' -version', $returnarray);
if (is_array($returnarray) and !empty($returnarray[0]) and preg_match('/ImageMagick/i', $returnarray[0]))
{
if (preg_match('/Version: ImageMagick (\d+\.\d+\.\d+-?\d*)/', $returnarray[0], $match))
@@ -704,7 +728,7 @@ class image_ext_imagick implements imageInterface
$this->add_command('sampling-factor', '4:2:2' );
}
$exec = $this->imagickdir.'convert';
$exec = $this->imagickdir.pwg_image::get_ext_imagick_command();
$exec .= ' "'.realpath($this->source_filepath).'"';
foreach ($this->commands as $command => $params)

View File

@@ -320,7 +320,7 @@ switch (pwg_image::get_library())
{
case 'ext_imagick':
$library = 'External ImageMagick';
exec($conf['ext_imagick_dir'].'convert -version', $returnarray);
exec($conf['ext_imagick_dir'].pwg_image::get_ext_imagick_command().' -version', $returnarray);
if (preg_match('/Version: ImageMagick (\d+\.\d+\.\d+-?\d*)/', $returnarray[0], $match))
{
$library .= ' ' . $match[1];