Erreur d'images

  • Posts: 82863
  • Thank you received: 13372
  • MODERATOR
12 years 9 months ago #38429

Nous utilisons déjà ce genre de code php pour gérer la transparence des png et des gif. Nous utilisons même une version plus complexe qui gère la couleur transparente dans les gif:

$thumb = ImageCreateTrueColor($newWidth, $newHeight);
			if(in_array($extension,array('gif','png'))){
				$trnprt_indx = imagecolortransparent($img);
				if ($trnprt_indx >= 0) {
					$trnprt_color = imagecolorsforindex($img, $trnprt_indx);
					$trnprt_indx = imagecolorallocate($thumb, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
					imagefill($thumb, 0, 0, $trnprt_indx);
					imagecolortransparent($thumb, $trnprt_indx);
				}elseif($extension=='png'){
					imagealphablending($thumb, false);
					$color = imagecolorallocatealpha($thumb, 0, 0, 0, 127);
					imagefill($thumb, 0, 0, $color);
					imagesavealpha($thumb,true);
				}
			}
			if(function_exists("imageAntiAlias")) {
				imageAntiAlias($thumb,true);
			}
			if(function_exists("imagecopyresampled")){
				ImageCopyResampled($thumb, $img, 0, 0, 0, 0, $newWidth, $newHeight,$this->width, $this->height);
			}else{
				ImageCopyResized($thumb, $img, 0, 0, 0, 0, $newWidth, $newHeight,$this->width, $this->height);
			}

Cela devrait fonctionner avec n'importe quel format de png. J'ai parlé de paint.net car c'est l'outil que j'utilise personnellement, n'étant pas designeur, mais l'outil importe peu.
J'ai essayé différentes solutions pour ne plus avoir cela mais aucun succès, certains png avec un background transparents perdent leur transparence.

Je suis à cours de solution. Si quelqu'un d'autre a des idées, je suis prenneur :)

Please Log in or Create an account to join the conversation.

  • Posts: 245
  • Thank you received: 13
12 years 9 months ago #38432

Question un peu bête ...

Cela changerait quelque chose si on bougeait la sauvegarde de l'alpha ?

}elseif($extension=='png'){
imagealphablending($thumb, false);
imagesavealpha($thumb,true);
$color = imagecolorallocatealpha($thumb, 0, 0, 0, 127);
imagefill($thumb, 0, 0, $color);
}


Être breton c'est un peu comme être dieu, mais en mieux!

Please Log in or Create an account to join the conversation.

  • Posts: 70
  • Thank you received: 6
12 years 9 months ago #38442

Et bien dans image.php, on a bien tout ça (ImageCreateTrueColor ) et pour répondre à la dernière question j'ai essayé de mettre imagesavealpha() juste après imagealphablending(), mais ça ne change rien pour moi.

Toutes les routine PNG que j'ai pu voir en PHP correspondent à ce que l'on a dans image.php. J'ai même ajouté "header('Content-type: image/png');" avant imagepng($thumb,null,7,PNG_NO_FILTER), et rien de plus. Le problème est surement ailleurs.

De mon coté la librairie GD (GD version) est 2.0.34, FreeType Version 2.3.7, et bien sûr PNG Support = enabled.

Pour info je suis en PHP 5.2.17, pas encore en 5.3, mais je ne pense pas que cela vienne de là.

Please Log in or Create an account to join the conversation.

  • Posts: 245
  • Thank you received: 13
12 years 9 months ago #38463

Et si on utilise ImageMagick ?


Être breton c'est un peu comme être dieu, mais en mieux!

Please Log in or Create an account to join the conversation.

  • Posts: 245
  • Thank you received: 13
12 years 9 months ago #38474

ca en parle aussi ici : forum.joomla.fr/showthread.php?161359-Im...st-plus-transparente

Sinon j'ai trouvé la source du problème ( enfin je pense) si on désactive ce bout de code

function scaleImage($x,$y,$cx,$cy) {

		if(empty($cx)){

			$cx = 9999;

		}

		if(empty($cy)){

			$cy = 9999;

		}

			if ($x>=$cx || $y>=$cy) {

					if ($x>0) $rx=$cx/$x;

					if ($y>0) $ry=$cy/$y;

					if ($rx>$ry) {

							$r=$ry;

					} else {

							$r=$rx;

					}

					$x=intval($x*$r);

					$y=intval($y*$r);

					return array($x,$y);

			}

			return false;

	}

On a des erreurs, on a l'image en grand, mais on a plus le fond noir :)


Être breton c'est un peu comme être dieu, mais en mieux!
Last edit: 12 years 9 months ago by Networlds.

Please Log in or Create an account to join the conversation.

  • Posts: 82863
  • Thank you received: 13372
  • MODERATOR
12 years 9 months ago #38476

C'est bien tenté mais ca n'est pas la solution ;)
Cela désactive le redimensionnement de l'image. Donc forcément vous n'aurez pas le fond noir.
Mais du coup l'image utilisée est l'image en grand et le redimensionnement est fait à la volée en CSS par le browser.
Ce qui veut dire que si vous avez un listing de 20 produits avec chacun une image d'origine de 2Mo, il faudra télécharger 40Mo d'image au browser pour afficher la page. Bref, une éternité. C'est le principe du redimensionnement des images en miniatures d'éviter cela.

Please Log in or Create an account to join the conversation.

  • Posts: 70
  • Thank you received: 6
12 years 9 months ago #38478

De mon coté j'ai fait une modif qui fonctionne presque (voir pièce jointe), sauf pour les ombres.

J'ai remplacé :

}elseif($extension=='png'){
    imagealphablending($thumb, false);
    $color = imagecolorallocatealpha($thumb, 0, 0, 0, 127);
    imagefill($thumb, 0, 0, $color);
    imagesavealpha($thumb,true);
}
par :
}elseif($extension=='png'){
    ImageColorTransparent($thumb, ImageColorAllocate($thumb, 0, 0, 0));
    ImageAlphaBlending($thumb, false);
}




On continue de chercher...

Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 70
  • Thank you received: 6
12 years 9 months ago #38488

Bon si je trouve, je gagne une version Hikashop Business ???

OK DAC alors voila la version simplifiée de ce que j'ai fait (pour les PNG 32), et pour moi ça fonctionne, ça importe bien les PNG TrueColor.

$extension = strtolower(substr($file_path,strrpos($file_path,'.')+1));
		
$thumb = imagecreatetruecolor($newWidth, $newHeight);
imagealphablending($thumb, false);
imagesavealpha($thumb, true);		
$img = $this->_getImage($image,$extension);
imagealphablending($img, true);
imagesavealpha($img,true);
		
if($newWidth!=$this->width || $newHeight!=$this->height){
	if(in_array($extension,array('gif','png'))){
		$trnprt_indx = imagecolortransparent($img); // retourne la couleur transparente actuelle
		if ($trnprt_indx >= 0) {
			$trnprt_color = imagecolorsforindex($img, $trnprt_indx);
			$trnprt_indx = imagecolorallocate($thumb, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
			imagefill($thumb, 0, 0, $trnprt_indx);
			imagecolortransparent($thumb, $trnprt_indx);
		}
	}
	if(function_exists("imageantialias")) {
		imageantialias($thumb,false);
	}
	if(function_exists("imagecopyresampled")){
		imagecopyresampled($thumb, $img, 0, 0, 0, 0, $newWidth, $newHeight,$this->width, $this->height);
	}else{
		ImageCopyResized($thumb, $img, 0, 0, 0, 0, $newWidth, $newHeight,$this->width, $this->height);
	}
}else{
	$thumb =& $img;
}

Il reste le bout de code pour les fichier GIF, je n'ai pas eu le temps de nettoyer et d'adapter, pour moi les GIF ça date du siècle dernier... :laugh:

@Networlds, si tu veux bien essayer pour vérifier de ton coté... Merci d'avance.

Please Log in or Create an account to join the conversation.

  • Posts: 245
  • Thank you received: 13
12 years 9 months ago #38489

J'ai trouvé ça au passage ^^ == phpthumb.sourceforge.net/

Essaye ça ... Apparemment ça fonctionne ^^

[strike]}elseif($extension=='png'){

					imagepalettecopy($thumb, $img);
					
					imagealphablending($thumb, false);

					$color = imagecolorallocatealpha($thumb, 0, 0, 0, 127);

					imagefill($thumb, 0, 0, imagecolortransparent($thumb));

					imagesavealpha($thumb,true);

				}[/strike]

Ca ne marche plus .. .Comprend pas je test ton code :)


Être breton c'est un peu comme être dieu, mais en mieux!
Last edit: 12 years 9 months ago by Networlds.

Please Log in or Create an account to join the conversation.

  • Posts: 245
  • Thank you received: 13
12 years 9 months ago #38493

Tu peux me filer le fichier car j'ai une erreur de syntax et je ne vois pas ou :/ ^^
Et si j’enlève ton code, je n'ai plus d'erreur


Être breton c'est un peu comme être dieu, mais en mieux!

Please Log in or Create an account to join the conversation.

  • Posts: 70
  • Thank you received: 6
12 years 9 months ago #38494

Je te passe le fichier image.php. Je viens de charger une image PNG 32 issue d'Illustrator sans problème.


image.php

Please Log in or Create an account to join the conversation.

  • Posts: 70
  • Thank you received: 6
12 years 9 months ago #38495

oups, je te le zip car je crois que les php ne peuvent être uploadés.


File Attachment:

File Name: image.zip
File Size:4 KB

Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 245
  • Thank you received: 13
12 years 9 months ago #38496

A oui nikel chrome :D

Perso ... J’abandonnai là mdr ...

Impeccable :) ... Maintenant voir si pour Nicolas, il peut l'intégrer sans soucis dans le code ....


Être breton c'est un peu comme être dieu, mais en mieux!
Last edit: 12 years 9 months ago by Networlds.

Please Log in or Create an account to join the conversation.

  • Posts: 70
  • Thank you received: 6
12 years 9 months ago #38497

Il faut surtout intégrer correctement toutes les possibilités telles que JPEG / PNG8 / PNG24 / PNG32 et GIF pour les nostalgiques (et autres formats).

Il existe des librairies biens plus évoluées, à voir s'il est nécessaire de changer ou d'adapter.

Content que cela fonctionne pour toi Networlds.

Nicolas, merci de voir une solution plus propre pour la future release d'Hikashop, ça m'éviterait de modifier le code une nouvelle fois ;) .

A+

The following user(s) said Thank You: Networlds

Please Log in or Create an account to join the conversation.

  • Posts: 82863
  • Thank you received: 13372
  • MODERATOR
12 years 9 months ago #38649

L'idée de mettre un canal alpha directement sur l'image source semble en effet fonctionner. Nous avons testé avec les différents format d'image et c'est très concluant.

Nous allons donc rajouter cela pour la prochaine version d'hikashop.
Merci de nous avoir aidé à avancer sur le problème !

Please Log in or Create an account to join the conversation.

  • Posts: 70
  • Thank you received: 6
12 years 9 months ago #38664

De rien Nicolas, cela me paraissait logique de partir de la source. Merci pour ce composant qui me surprend agréablement, moi qui ne connaissait que Virtuemart sous Joomla 1.5, et de vue (de loin) les autres ténors du monde eCommerce.

Hikashop est beaucoup plus intuitif et agréable à utiliser, même s'il a encore des défauts de jeunesse. Continuez comme ça, ravi en plus de voir un forum réactif.
Je n'utilise que la version Starter pour l'instant, mais pour démarrer les fonctions présentes me suffisent :) , bien que certaines autres m'auraient été utiles, et me seront peut-être utiles.

A+.

Please Log in or Create an account to join the conversation.

  • Posts: 245
  • Thank you received: 13
12 years 9 months ago #38668

J'avais commencé avec la starter aussi ... j'ai pris rapidement la standard, et depuis peu j'ai pris business ... Entre nous, Business c'est le top ^^ ... Donc si tu veux prendre une version ... Je te conseil la business, mais c'est comme tout, il faut voir par soit même. Au pire tu upgrades et tu payeras uniquement l'écart entre les versions ;). Quand tu penses que le programme à que 1 an 1/2 ^^ . Moi je dis c'est beau :D

Sinon ... Bof, de rien va , je me suis cassé un peu la tête :siffle: ... OIooppss arf non c'est pas moi ... merde :D mdr
Non c'est bien pensé ... Je testais différente manière en préservant la base, mais rien ne passé. Bon boulot ;) :P


Être breton c'est un peu comme être dieu, mais en mieux!

Please Log in or Create an account to join the conversation.

  • Posts: 70
  • Thank you received: 6
12 years 9 months ago #38669

Oui effectivement je mordrai sûrement à la Business dès que le besoin se fera sentir, ou si mon client actuel veut plus de fonctions.

Ce que je n'ai pas trouvé en attendant c'est la gestion des codes barres. Chaque produit a un code (produit) et chaque variante peut avoir son propre code, normal. Mais bien souvent une gamme commerciale intègre aussi un code barre, il serait judicieux de le prévoir en plus en natif et de pouvoir l'imprimer sur le bon de commande client, ce qui permettrait de scanner à réception de cette commande.

Ce n'est qu'une idée de plus, mais rien d'impossible...

Please Log in or Create an account to join the conversation.

  • Posts: 82863
  • Thank you received: 13372
  • MODERATOR
12 years 9 months ago #38791

Je pense que vous pouvez faire cela avec un champs personnalisé de type "fichier" de la table "produit" et quelques personnalisations de code.

Sinon l'idéal serait de faire un nouveau type de champs personnalisé qui pourrait générer le code barre directement à l'affichage. Ce serait faisable via un plugin système et l'ajout d'un trigger dans hikashop pour le gérer. Idée intéressante en tout cas mais pas prioritaire :)

Please Log in or Create an account to join the conversation.

  • Posts: 70
  • Thank you received: 6
12 years 9 months ago #38838

OK mais qui dit champs perso, dit version commerciale. Donc il faudra que j'y vienne 1 de ces 4.

C'est vrai que ma suggestion peut paraître intéressante mais non prioritaire. Seulement de plus en plus de fabricants ou revendeurs utilisent une boutique eCommerce. Et qui dit fabricant, dit gestion de base article. Aujourd'hui scanner un code barre est relativement courant et facilite la gestion des commandes (ou réception produits).
Donc si un fabricant avec un site eCommerce, équipé de douchettes pour ses codes barres, peut scanner directement ses lignes de commandes, c'est du temps gagné tout en gérant son stock dans la foulée.

Pas prioritaire effectivement, mais même si Hikashop est fantastique à utiliser, il faut avoir des atouts pour se démarquer de la concurrence. Et c'est peut-être avec des petits plus que cela est possible. Ce serait mieux que de bidouiller avec des plugins externes, même si pour l'instant c'est une solution de dépannage. ;)

Mais là on déborde du sujet de ce topic, je vais en ouvrir un autre pour d'autres questions, A+. :)

Please Log in or Create an account to join the conversation.

Time to create page: 0.109 seconds
Powered by Kunena Forum