Jump to content

[résolu] override imageManager non pris en compte


Recommended Posts

Bonjour,

j'i très légèrement modifié la class imageManager et je voulais faire ça proprement en faisant un override mais mon override n'est jamais pris en compte.

 

Voici le code de mon override:

<?php
class ImageManager extends ImageManagerCore
{
/**
 * Resize, cut and optimize image
 *
 * @param string $src_file Image object from $_FILE
 * @param string $dst_file Destination filename
 * @param integer $dst_width Desired width (optional)
 * @param integer $dst_height Desired height (optional)
 * @param string $file_type
 * @return boolean Operation result
 */
public static function resize($src_file, $dst_file, $dst_width = null, $dst_height = null, $file_type = 'jpg', $force_type = false)
{
 if (PHP_VERSION_ID < 50300)
  clearstatcache();
 else
  clearstatcache(true, $src_file);

 if (!file_exists($src_file) || !filesize($src_file))
  return false;
 list($src_width, $src_height, $type) = getimagesize($src_file);
 // If PS_IMAGE_QUALITY is activated, the generated image will be a PNG with .jpg as a file extension.
 // This allow for higher quality and for transparency. JPG source files will also benefit from a higher quality
 // because JPG reencoding by GD, even with max quality setting, degrades the image.
 if (Configuration::get('PS_IMAGE_QUALITY') == 'png_all'
  || (Configuration::get('PS_IMAGE_QUALITY') == 'png' && $type == IMAGETYPE_PNG) && !$force_type)
  $file_type = 'png';
 if (!$src_width)
  return false;
 if (!$dst_width)
  $dst_width = $src_width;
 if (!$dst_height)
  $dst_height = $src_height;
 $src_image = ImageManager::create($type, $src_file);
 $width_diff = $dst_width / $src_width;
 $height_diff = $dst_height / $src_height;
 if ($width_diff > 1 && $height_diff > 1)
 {
  $next_width = $src_width;
  $next_height = $src_height;
 }
 else
 {
  if (Configuration::get('PS_IMAGE_GENERATION_METHOD') == 2 || (!Configuration::get('PS_IMAGE_GENERATION_METHOD') && $width_diff > $height_diff))
  {
$next_height = $dst_height;
$next_width = round(($src_width * $next_height) / $src_height);
$dst_width = (int)(!Configuration::get('PS_IMAGE_GENERATION_METHOD') ? $dst_width : $next_width);
  }
  else
  {
$next_width = $dst_width;
$next_height = round($src_height * $dst_width / $src_width);
$dst_height = (int)(!Configuration::get('PS_IMAGE_GENERATION_METHOD') ? $dst_height : $next_height);
  }
 }
 if (!ImageManager::checkImageMemoryLimit($src_file))
  return false;

 $dest_image = imagecreatetruecolor($dst_width, $dst_height);
 // If image is a PNG and the output is PNG, fill with transparency. Else fill with white background.
 /*if ($file_type == 'png' && $type == IMAGETYPE_PNG)
 {*/
  imagealphablending($dest_image, false);
  imagesavealpha($dest_image, true);
  $transparent = imagecolorallocatealpha($dest_image, 255, 255, 255, 127);
  imagefilledrectangle($dest_image, 0, 0, $dst_width, $dst_height, $transparent);
 /*}
 else
 {
  $white = imagecolorallocate($dest_image, 255, 255, 255);
  imagefilledrectangle ($dest_image, 0, 0, $dst_width, $dst_height, $white);
 }*/
 imagecopyresampled($dest_image, $src_image, (int)(($dst_width - $next_width) / 2), (int)(($dst_height - $next_height) / 2), 0, 0, $next_width, $next_height, $src_width, $src_height);
 return (ImageManager::write($file_type, $dest_image, $dst_file));
}
}

 

Quelqu'un aurait une idée ?

 

Ps: j'ai juste supprimer le la condition sur les png pour que le fond blanc ne soit jamais appliqué et si je fait cette modif directe dans le imageManager (sans override donc) ça marche sans problème.

Edited by maniT4c (see edit history)
Link to comment
Share on other sites

  • 4 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...