[PHP]imagecopyresize = rien !!!! ?

A

Anonyme

Invité
Bonjour tout le monde,
alors je ne programme pas depuis longtemps en PHP mais j'ai compris les bases, c'est déja bien ! ;)

Donc j'ai des problemes pour redimensionné une image qui apparaitrai comme petite illustration dans mes news
Voici le code que j'ai utilisé:
Bloc de code:
/*Variables liees aux images*/ 

/*Repere est le nom de mon fichier sans l'extension*/
$repere = $_POST['repere']; 

$tmpimgnews = $_FILES['imgnews']['tmp_name']; 

$typeimgnews = $_FILES['imgnews']['type']; 

$erreurimgnews = $_FILES['imgnews']['error']; 

/*Variables fixes pour la redimension de l'image*/ 

$imgnews_l = 50; 

/*Traitement des images*/ 

/*Image news*/ 

if (!$erreurimgnews=='0'){ 
* *print("Tu n'as pas choisis d'image pour ta news !<br> T'as le droit mais elle pourrai mettre en valeur ton article et attirer le lecteur.<br> Je te conseil d'en mettre une.</td>"); 
} 
else{ 

* *if (($typeimgnews=='image/jpeg')||($typeimgnews=='image/gif')||($typeimgnews=='image/* *png')){ 
* ** * 
* ** *if($typeimgnews=='image/jpeg') $extimgnews = '.jpg' ; 
* ** *if($typeimgnews=='image/gif') $extimgnews = '.gif' ; 
* ** *if($typeimgnews=='image/png') $extimgnews = '.png' ; 
* ** * 
* ** *$destinationimgnews = '../news/imgnews/'.$repere.$extimgnews; 
* ** * 
* ** */*Recuperation des donnees de l'image*/ 
* ** *list($tmpimgnews_l,$tmpimgnews_h) = getimagesize($tmpimgnews); 
* ** * 
* ** */*Calcule de la prportion pour la hauteur par rapport a la largeur*/ 
* ** *if ($tmpimgnews_l > $imgnews_l){ 
* ** * 
* ** ** *$imgnews_h = floor($tmpimgnews_h*$imgnews_l/$tmpimgnews_l); 
* ** ** * 
* ** ** */*Redimensionnement et copie de l'image*/ 
* ** ** *imagecopyresized($tmpimgnews,$destinationimgnews,0,0,0,0,$imgnews_l,$imgnews_h,$tmpimgnews_l,$tmpimgnews_h);
* ** *} 
* ** *else{ 
* ** ** *move_uploaded_file($tmpimgnews, $destinationimgnews); 
* ** *} 
* ** * 
* ** *print("Image de ta news:<br> 
* ** *Taille orig: $tmpimgnews_l x $tmpimgnews_h<br> 
* ** *Taille: $imgnews_l x $imgnews_h<br> 
* ** *<img src=\"$destinationimgnews\" width=\"40\"> 
* ** *</td> 
* ** *"); 

* *} 
* *else { 
* ** *print("Ce n'est pas un format d'image correct</td>"); 
* *} 
* * 
}

Voila, donc le probleme c'est qu'il ne se passe rien, ni erreur ni copie de fichier. Comment résoudre le probleme, qu'est ce que j'ai oublié,...?
Merci pour votre aide !!!
 
Salut,

J'ai une function qui crée des miniatures.. mais elle est un peu différente. (tu ne fais pas de fonction avec ton script ??)

Voici ce que ça donnerait :
header("Content-Type: image/jpeg"); //jpeg gif ou png suivant le cas
$hauteur = xxx;
$largeur = xxx;
$image = $_FILES['imgnews']['tmp_name'];
$img_in = imagecreatefromjpeg($image); //jpeg gif ou png suivant le cas
$img_out = imagecreatetruecolor($largeur, $hauteur);
imagecopyresampled($img_out, $img_in, 0, 0, 0, 0, imagesx($img_out), imagesy($img_out), imagesx($img_in), imagesy($img_in));
imagejpeg($img_out,$destinationimgnews);
Normalement l'inconvénient de ce script est qu'il ne te permet pas d'afficher quoique ce soit sur la page..

Il faut donc l'executer sur une nouvelle page... puis ajouter cette ligne à la fin pour revenir directement sur le site une fois l'image redimensionnée enregistrée :
header ("Location: page.php");
Mais je ne dis pas que c'est impossible d'enregistrer ton image directement avec le move_uploaded_file() j'ai jamais essayé (d'ailleur je vais le faire à l'occasion). Il peut aussi s'agir d'un problème d'accès du répertoire de destination. Ou alors ton serveur web n'as pas la bibliothèque GD..

Bonne chance !
 
Salut Matthieu

Non je ne fais pas de fonction, j'me suis pas pencher sur le problème
j'essai et après on voit pour mettre dans une fonction.... c'est ma technique de travail quoi...

Alors la j'ai LA question qui tue et vraiment niveau débutant, qu'est ce que la bibliothèque GD ?????:confused:

Parce que je veux bien que je ne l'ai pas mais faudrait au moins savoir ce que c'est !!!!

Voilà autrement, t'a testé mon script pour savoir sui il fonctionne?

Merci pour vos réponses prochaines
 
Re-salut, j'ai trouvé ce que je cherchais.

Le truc c'est que j'ai installé PHP 4.3.6 avec Entropy donc logiquement j'ai installe GD avec.
Voilà ce que je peux dire.
 
Alors la bibliothèque GD te permet de générer des images, ce genre de choses.

Pour savoir si tu l'as, tu fais un fichier.php qui contient :

<?php
phpinfo();
?>

Ensuite tu fais une recherches et tu devrais trouver GD enable a qq part sur ta page, si il est activé.

Si tu as juste activer php sans le complier toi-même ou sans utiliser de package, alors cherches pas tu l'as pas. Entropy.ch proposent de très bons package avec GD inclus :

php5 => http://www2.entropy.ch/download/Entropy-PHP-5.0.1-1.dmg
php4 => http://www2.entropy.ch/download/Entropy-PHP-4.3.6-4.dmg

Sinon non j'ai pas testé ton code... J'ai pas le temps là dsl.

Good luck a+
 
Oui donc je te disais c'est ce que j'ai installé.
C'est vrai qu'avant il me disais que la commande n'existait pas mais maintenant il ne fait plus rien !
Aucun fichier physique , rien que neni...
Donc voilà

Si t'as l'occasion de l'essayer ce serait cool ou uelqu'un d'autre.

Merci pour votre interessement au problème.
 
OK merci je vais essayer ton code

Mais en fait j'aurais voulu comprendre pourquoi ca marchais pas pour aprendre quoi...

Voila si quelqu'un à le temps ce serai sympa.

@+++
et merci encore pour l'aide :) ;)
 
Salut !

Ton code ne fonctionne pas entre autre parce que la fonction imagecopyresized veux des variables resources pour les deux premiers arguments et non un nom de fichier !!!

Voici un exemple de code qui resize une image en 100x100 :

Bloc de code:
<html><body>
<?
	$original = "image.jpg";
	$new = "test.jpg";
	$taille_l = 100;
	$taille_h = 100;
	print("Image originale : ".$original."<br>");
	if (list($original_l,$original_h) = getimagesize($original)) {
		print("Largeur=".$original_l.", hauteur=".$original_h."<br>");
		$img_ori = imagecreatefromjpeg($original);
		$img_new = imagecreatetruecolor($taille_l,$taille_h);
		imagecopyresized($img_new,$img_ori,0,0,0,0,$taille_l,$taille_h,$original_l,$original_h);
		ImageJPEG($img_new,$new,100);
		print("Image créée !!!<br>");
		print("<img src=\"$new\">");
	}
	else
		print("Erreur !!!<br>");
?>
</body></html>

Avec ça, tu devrais t'en sortir !
 
Mais ca ne fonctionne qu'avec les image JPEg si je comprend bien? Ou ca fonctionne avec toutes les image et ca en créé une JPEG à la fin?
Merci beaucoup parce que là au moins je comprend mes erreurs !!!!

@+++
 
Capripot a dit:
Alors pour la redimension ca marche impecable
mais ca me fait une image noir
d'ou ca vient???
@+
Ca me l'a aussi fait au début de mes tests. Je vois deux possibilités. Soit une variable mal orthographiée, soit tu as inversé les deux premiers paramètres de imagecopyresized (attention, il faut d'abord passer la variable correspondant à la NOUVELLE image (destination) et en deuxième la source !!!)...


A+
 
Capripot a dit:
Mais ca ne fonctionne qu'avec les image JPEg si je comprend bien? Ou ca fonctionne avec toutes les image et ca en créé une JPEG à la fin?
Merci beaucoup parce que là au moins je comprend mes erreurs !!!!

@+++

Ca marche en tout cas avec les formats JPEG, GIF et PNG. L'image orginale est chargée dans une variable :

Bloc de code:
$img_ori = imagecreatefromjpeg($original);

avec la fonction 'imagecreatefromjpeg'. Cette fonction a des petits frères : imagecreatefromgif et imagecreatefrompng.
Après, les images (sous forme de ressource) avec lesquelles tu bosses ne sont plus à un format donné. Dans le bout de code de mon post plus haut, j'utilise la procédure imageJPEG pour créer l'image proprement dite d'après une ressource. Et comme par magie, cette procédure a des petits frères : imagegif et imagepng !

Voilà !

Bon code !
 
Super super super !!!!! :up:

Merci beaucoup

Je vais réussir enfin a trouver un code de minimalisation correct: le miens !!!! avec vos précieuses aides
et je le publierai dans ce post

Encore merci et @+++ :) :zen:
 
Bonjour tout le monde,

Alors j'ai travaillé (un petit peu) sur les propositions que l'on m'a donné et ca donne la fonction suivantes:

Redimension pour images JPEG :
Bloc de code:
 function redimensionJPEG($tmpimg,$chemin,$nom,$img_l){
 	
 	$destination = $chemin.$nom.'.jpg';
 	
 	list($tmpimg_l,$tmpimg_h) = getimagesize($tmpimg);
 	
 	if ($tmpimg_l > $img_l){
 	
 		$img_h = floor($tmpimg_h*$img_l/$tmpimg_l);
 			
 		$img_orig = imagecreatefromjpeg($tmpimg);
 		$img_new = imagecreatetruecolor($img_l,$img_h);
 		
 		imagecopyresized($img_new,$img_orig,0,0,0,0,$img_l,$img_h,$tmpimg_l,$tmpimg_h);
 		
 		imagejpeg($img_new, $destination, 100);
 	}
 	else{
 		move_uploaded_file($tmpimg, $destination);
 	}
 		
 	print("
 	<img src=\"$destination\" width=\"$img_l\">
 	<br>
 	");
 	
 }

Voilà alors maintenant servez-vous en bien !!!

@+
 
  • J’aime
Réactions: molgow