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

+2 -0

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.

+2 -0

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.

+0 -0
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