Im en utilisant le code suivant pour prendre une image, convertir en niveaux de gris, puis enregistrer l'image en niveaux de gris:l'écriture de nouvelles données d'image dans un fichier après la conversion en niveaux de gris php
$imagename = "$imagename"; // path to previously uploaded color jpeg
$im = ImageCreateFromJpeg($imagename);
$imgw = imagesx($im);
$imgh = imagesy($im);
for ($i=0; $i<$imgw; $i++)
{
for ($j=0; $j<$imgh; $j++)
{
$rgb = ImageColorAt($im, $i, $j);
$rr = ($rgb >> 16) & 0xFF;
$gg = ($rgb >> 8) & 0xFF;
$bb = $rgb & 0xFF;
$g = round(($rr + $gg + $bb)/3);
$val = imagecolorallocate($im, $g, $g, $g);
imagesetpixel ($im, $i, $j, $val);
}
}
$grayimgpath = "step2cache/".$saltname."_gray.jpg"; //$saltname is a randomly generated image name
$fh = fopen($grayimgpath, 'w') or die("can't open file");
fwrite($fh, $im);
fclose($fh);
Le problème est, quand je accéder à ce fichier, son vide, 15 octets.
Que manque-t-il ici?
pourquoi est-ce? juste curieux – mrpatg
'$ im' n'est pas un contenu binaire d'un fichier, c'est un objet PHP contenant une structure interne définie par GD. Lorsque vous l'écrivez dans le fichier, vous écrivez sa représentation textuelle, probablement la même chose que '(string) $ im'. – NOtherDev
qui avait vraiment traversé mon esprit, merci pour la clarification – mrpatg