Demande d'explication de code

Mammouth du PHP | 620 Messages

27 mai 2008, 18:58

Bonjour,
j'ai un code php qui permet d'afficher une image prise en flash par webcam.
est ce que quelqu'un pourrait m'expliquer le code php svp car l'affichage de l'image fonctionne bien mais j'aimerai recuperer la photos et l'enregister dans un repertoire de mon ftp afin de faire par la suite un genre de mini galerie.

<?php

function hex2in_digit($num) {
	if (($num >= '0') && ($num <= '9'))
		return $num;
	return ord(strtolower($num)) - ord('a') + 10;
}

function hex2int($num) {
	if (strlen($num) == 1) $num = "0" . $num;
	return hex2in_digit($num[0])*16 + hex2in_digit($num[1]);
}

function normColor($c) {
	$c = floor($c);
	if ($c < 0) return 0;
	if ($c > 255) return 255;
	return $c;
}

$yv = explode(",",$_POST['yv']);
$cb = explode(",",$_POST['cb']);
$cr = explode(",",$_POST['cr']);

$sortie = imagecreatetruecolor(260,220);

$k=0;
for($i=0;$i<120;$i++) {
	for($j=0;$j<160;$j++){
		$y_value = hex2int($yv[$k]);
		//tab[i][j]=tab[i*n+j] with n the width
		$index = floor($i/4) * 40 + floor($j/4); //40=160/4
		$cb_value = hex2int($cb[$index]);
		$cr_value = hex2int($cr[$index]);

		$r = normColor(1 * $y_value + 0.0000 * $cb_value + 1.4022 * $cr_value + (1.4022 * -127.5));
		$g = normColor(1 * $y_value + -0.3456 * $cb_value + -0.7145 * $cr_value + (-0.3456 * -127.5) + (-0.7145 * -127.5));
		$b = normColor(1 * $y_value + 1.7710 * $cb_value + 0.0000 * $cr_value + (1.7710* -127.5));

		$pix = imagecolorallocate($sortie, $r, $g, $b);

		imagesetpixel($sortie,$j,$i,$pix);
		$k++;
	}
}
header("Content-type: image/jpeg");
imagejpeg($sortie,"",100);
imagedestroy($sortie);

?>

merci 

ViPHP
ViPHP | 3607 Messages

27 mai 2008, 19:06

bonsoir,
alors je ne peut pas t'expliquer tout le code (je comprend pas tout... ;)
mais je sais que pour enregistrer tes images, il faut modifier ces lignes:
header("Content-type: image/jpeg");
imagejpeg($sortie,"",100);
imagedestroy($sortie); 
en
header("Content-type: image/jpeg");
imagejpeg($sortie,"unchemin/unfichier.jpg",100);
imagedestroy($sortie); 
où unchemin/unfichier.jpg est le nom de fichier que tu enregistres.

Mammouth du PHP | 620 Messages

27 mai 2008, 19:18

ok j'ai essayé de mettre un chemin mais mon image n'apparait plus. (j'ai une croix rouge a la place)
par contre mon image unfichier.jpg s'enregistre bien dans mon repertoire.

comment faire pour que le nom de l'image change automatiquement ? du genre faire une incremantation pour que les photos ne portent pas le meme nom.

ViPHP
ViPHP | 3607 Messages

27 mai 2008, 20:55

essaye quelque chose genre:
imagejpeg($sortie,"unchemin/unfichier.jpg",100);
imagedestroy($sortie);
header("Location: unchemin/unfichier.jpg");
dis moi si les deux sorties fonctionnent?

Mammouth du PHP | 620 Messages

27 mai 2008, 21:08

Oui dans ce sens sa fonctionne merci. J’ai bien mon image qui s'enregistre et j'ai bien mon aperçu.
Pour changer le nom de l'image j'avais pensé à une auto-incrémentation du genre photo.jpg, photo2.jpg, photo3.jpg ... mais en pratique je ne sais pas le faire.

ViPHP
ViPHP | 3607 Messages

27 mai 2008, 21:16

tu peux te servir de la date et de l'heure...
ça donnerait pour le nom du fichier:
$nom=md5(microtime());

Mammouth du PHP | 620 Messages

27 mai 2008, 21:35

oui tres bonne idée sa fonctionne
$nom=md5(microtime()).'.jpg';
bon le nom de l'image ne ressemble a rien mais bon sa fonctionne. Merci.
Je vais essayé de passer par sql maintenant pour faire une galerie des snap.

ViPHP
ViPHP | 4674 Messages

28 mai 2008, 00:09

Hey :),

J'arrive un peu après la bataille mais je te donne quand même l'idée. Si tu veux avoir fichier3.txt si fichier, fichier1 et 2 existe déjà, il faudrait si prendre de cette façon :
// soit :
$extension = /* on récupère l'extension du fichier */;
$fichier = /* fichier sans l'extension */;
$i = null;

// si notre fichier existe déjà, alors :
if(file_exists($fichier . '.' . $extension)) {

    $i = 0;
    // on commence à compter.
    while(file_exists($fichier . ++$i . '.' . $extension));
}

// Notre fichier :
echo $fichier . $i . '.' . $extension;
Pas testé, mais l'idée est là :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 224 Messages

28 mai 2008, 00:47

How ;)

Moi aussi, après la bagarre, pour une autre proposition de nom avec les dates :

Pour Php > à 5.2.2 :
$nom = 'image-'.date('YmdHisu').'.jpg';
echo $nom; // 'image-2008052800410728067.jpg'
Pour les versions précédentes de Php :
$nom = 'image-'.date('YmdHis').substr(time(), -5).'.jpg';
echo $nom; // 'image-2008052800410728067.jpg'
Donc, le nom sera composé de la manière suivante :

- Le nom de base que tu auras choisi = 'image' par ex. ;
- Les 4 premiers chiffres = l'année en cours (2008) ;
- Les deux suivants = le mois en cours (05) ;
- Les deux qui suivent = le jours actuel (28) ;
- Les deux à la suite = l'heure présente (00) ;
- Ensuite, le autres deux = les minutes actuelles (41) ;
- Les deux suivantes = les secondes (07) ;
- Enfin, les 5 dernières = les millisecondes (28067) ;
- Pour finir, l'extension du fichier = '.jpg' par ex.

à+ ;)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)