Création image php
redessiner une image à partir d'une photo
Le problème exposé dans ce sujet a été résolu.
Salut,
Je reviens vers vous car je ne comprends absolument se qui cloche dans mon code.
Dans un but purement pédagogique, j'essaye de redessiner une image à partir d'une photo (oui ça ne sert à rien c'est bien pédagogique :-)).
Le soucis c'est que ça me dessine seulement la première ligne … WHY !!!!
Voila mon code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 | <?php
$photo = imagecreatefromjpeg("photos/mariage.jpg");
list($widthPhoto, $heightPhoto, $type, $attr) = getimagesize("photos/mariage.jpg");
$image = imagecreate($widthPhoto,$heightPhoto);
$couleur_fond = ImageColorAllocate ($image, 0, 97, 144);
for ($y = 0; $y < $heightPhoto ; $y++) {
for ($x = 0; $x < $widthPhoto ; $x++) {
//echo 'x ='.$x.' y='.$y.'<br />';
//récupère la couleur du pixel en question
$rgb = imagecolorat($photo, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
//on créé la couleur
$couleur = imagecolorallocate($image, $r, $g, $b);
//on affiche le pixel avec la couleur
imagesetpixel($image,$x,$y,$couleur);
}
}
header('Content-Type: image/jpeg');
imagejpeg($image);
?>
|
Merci d'avance pour votre aide car j'ai beau tout essayer et cela ne fonctionne pas.
j'ai fait un echo et pourtant ls x et y sont bien généré par mes for.
Florian
Ça doit faire depuis PHP3 que je n'ai pas touché au PHP mais en regardant la doc :
imagecreate
crée une image basé sur une palette (cf. la doc) ce qui n'est pas courant pour des photos (c'est typique du format gif par exemple). Ça ma semblé louche.
- le premier commentaire dans la doc de
imagecolorallocate
semble confirmé que c'est pas adapté : la fonction va planter (ou retourné FALSE) si tu utilise plus de 256 couleurs différentes (ce qui dans une photo est facile).
Donc, sans tester ni connaitre PHP, je dirais qu'il faut simplement utiliser imagecreatetruecolor
au lieu de imagecreate
sur ta ligne 6.
Bonne chance..
Merci Kje.
Je suis vraiment une chèvre…
C'est exactement ça. L'image est bien redessinée. Par contre j'ai une perte de qualité, je vais me pencher dessus pour comprendre, car je passe quand même de 22ko à 14,8 ko.
Merci kje.
Florian
Le format jpeg est un format de compression destructif : en compressant tu permets FORCEMENT de la qualité. La raison est ici très probablement les valeurs/options par défaut de imagejpeg
. Si j'étais toi j'augmenterai le paramètre quality
de imagejpeg
. Un truc comme 90 par exemple.
Pour quelqu'un qui ne fait plus de php depuis un moment tu gères bien…
Merci beaucoup pour la piste, je vais explorer de ce coté là.
Je te dirais se que cela a donné une fois mes tests terminés.
Merci beaucoup Kje ;-).
Florian
Je n'ai jamais vraiment fais du PHP mais beaucoup de traitement d'images. Ton code était court et la doc de PHP est relativement complète donc ça aide. En fait ici le langage n'a pas d'importance pour t'aider, c'est comprendre la doc d'une lib sur des techniques que je maîtrise bien.
Connectez-vous pour pouvoir poster un message.
Connexion
Pas encore membre ?
Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte