Jump to content

[RESOLU] Bug sur la création des images sous 1.5.4


Recommended Posts

Depuis ma mise à jour sur la 1.5.4, à chaque fois que j'utilise un module quel qu'il soit pour afficher une image est que celle ci est retravaillée par le module, j'ai une erreur :

 

[PrestaShop] Fatal error in module contentbox:

Call to undefined function checkImage()

 

ou

 

[PrestaShop] Fatal error in module slideshow:

Call to undefined function imageresize()

 

ou

 

[PrestaShop] Fatal error in module blockhtml:

Call to undefined function imgresize()

 

 

Ces modules fonctionnaient très bien avant la mise à jour..

La manière de traiter les images aurait changé depuis cette mise à jour.. Parce que ca craint du boudin.

 

La création des articles et donc des miniatures d'articles se fait correctement, mais ça c'est logique c'est du natif..

 

des infos ?

Edited by Jean Francois G (see edit history)
  • Like 1
Link to comment
Share on other sites

Ces fonctions se trouvent dans le fichier images.inc.php à la racine du dossier d'installation.

 

Le problème c'est que toutes ces fonctions sont dépréciées depuis le passage à la 1.5 pour laisser place à la class ImageManager, qui comme vous vous en êtes rendu compte est devenue le passage obligé.

 

Ils vous faut essayer de voir si ces modules ont bénéficié de mise à jour ou alors il faudrait les modifier !

Link to comment
Share on other sites

Simplement ces modules sont trop anciens par rapport à cette dernière version de Prestashop.

Il faut les mettre à jour, les modifier ou bien en trouver d'autres.

Je crois pas mon thème etait compatible sur la vers 1.5.3.1 et plus la 1.5.4.0 -_-

Link to comment
Share on other sites

il suffirait qu'un concepteur presta (s'il y en a qui lisent encore nos posts), nous explique quel changement à été fait entre 1.5.3.1 et 1.5.4 pour la génération des miniatures dans les modules, et nous pourrions modifier alors le source de ceux ci, mais sans explication plus précises, je ne vois pas quelle modif nous pouvons faire ?

Link to comment
Share on other sites

il suffirait qu'un concepteur presta (s'il y en a qui lisent encore nos posts), nous explique quel changement à été fait entre 1.5.3.1 et 1.5.4 pour la génération des miniatures dans les modules, et nous pourrions modifier alors le source de ceux ci, mais sans explication plus précises, je ne vois pas quelle modif nous pouvons faire ?

 

http://www.prestashop.com/forums/index.php?/topic/236151-prestashop-fatal-error-in-module-pct-banners-multilingue-call-to-undefined-function-checkimage/page__view__findpost__p__1167059 :)

Link to comment
Share on other sites

bonsoir,

 

félicitation à Jean François ...

 

Mais bon, pour ceux qui galère encore, l'astuce mise en place, peut-elle profiter aux autres, ou décidement, comme The Team P. tout est secret :huh:

 

Car tout le monde ne gère pas aussi bien le PHP... Alors je fais appel à ta jolie signature ;)

 

Et une petite mise en pratique, un grand merci d'avance.

 

Car même en passant sur ce post, où tu passas, naguère : http://www.prestashop.com/forums/topic/236151-prestashop-fatal-error-in-module-pct-banners-multilingue-call-to-undefined-function-checkimage/

 

Pas pu comprendre et mettre en pratique :huh:

 

SVP... un grand geste :)

Link to comment
Share on other sites

Alors donc, pour que mon module fonctionne sous 1.5.4 j'ai déclaré ma fonction dans la partie "private function" du fichier php comme ceci :

 

function imageResize($sourceFile, $destFile, $destWidth = NULL, $destHeight = NULL, $fileType = 'jpg')

{

if (!file_exists($sourceFile))

return false;

list($sourceWidth, $sourceHeight, $type, $attr) = getimagesize($sourceFile);

// 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))

$fileType = 'png';

 

if (!$sourceWidth)

return false;

if ($destWidth == NULL) $destWidth = $sourceWidth;

if ($destHeight == NULL) $destHeight = $sourceHeight;

 

$sourceImage = createSrcImage($type, $sourceFile);

 

$widthDiff = $destWidth / $sourceWidth;

$heightDiff = $destHeight / $sourceHeight;

 

if ($widthDiff > 1 AND $heightDiff > 1)

{

$nextWidth = $sourceWidth;

$nextHeight = $sourceHeight;

}

else

{

if (Configuration::get('PS_IMAGE_GENERATION_METHOD') == 2 OR (!Configuration::get('PS_IMAGE_GENERATION_METHOD') AND $widthDiff > $heightDiff))

{

$nextHeight = $destHeight;

$nextWidth = round(($sourceWidth * $nextHeight) / $sourceHeight);

$destWidth = (int)(!Configuration::get('PS_IMAGE_GENERATION_METHOD') ? $destWidth : $nextWidth);

}

else

{

$nextWidth = $destWidth;

$nextHeight = round($sourceHeight * $destWidth / $sourceWidth);

$destHeight = (int)(!Configuration::get('PS_IMAGE_GENERATION_METHOD') ? $destHeight : $nextHeight);

}

}

 

$destImage = imagecreatetruecolor($destWidth, $destHeight);

 

// If image is a PNG and the output is PNG, fill with transparency. Else fill with white background.

if ($fileType == 'png' && $type == IMAGETYPE_PNG)

{

imagealphablending($destImage, false);

imagesavealpha($destImage, true);

$transparent = imagecolorallocatealpha($destImage, 255, 255, 255, 127);

imagefilledrectangle($destImage, 0, 0, $destWidth, $destHeight, $transparent);

}else

{

$white = imagecolorallocate($destImage, 255, 255, 255);

imagefilledrectangle($destImage, 0, 0, $destWidth, $destHeight, $white);

}

 

imagecopyresampled($destImage, $sourceImage, (int)(($destWidth - $nextWidth) / 2), (int)(($destHeight - $nextHeight) / 2), 0, 0, $nextWidth, $nextHeight, $sourceWidth, $sourceHeight);

 

return (returnDestImage($fileType, $destImage, $destFile));

 

 

Attention, je ne dit pas que ca fonctionne avec tous les modules, mais moi ca m'a stoppé l'erreur.

Link to comment
Share on other sites

Bonjour Jean François,

 

encore un grand merci :)

 

je me replonge dans ce souci dès ce soir, donc à suivre ...

 

Et courage aux autres qui passeront ici prochainement ;)

 

Heu, un petit bug, et du coup j'ai cru que mon premier post n'était pas passé :blink:

 

Du coup doublon ...

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

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