Question

Je veux le faire si l'image sont sur les dimensions 604x453, puis la redimensionner à 604x453.

Ive fait jusqu'ici:

    $org_name = stripslashes($_FILES[$upload_name]['name']);
    $file_size = $_FILES[$upload_name]['size'];
    $file_temp = $_FILES[$upload_name]['tmp_name'];
    $file_type = $_FILES[$upload_name]["type"];
    $file_err  = $_FILES[$upload_name]['error'];
list($width, $height, $type, $attr) = $imageSizeInfo;
    $move_me = "images/users/status/".$org_name;
if(move_uploaded_file($file_temp, $move_me)) {
    echo "{";
    echo        "msg: '".$org_name."'";
    echo "}";
}
if($width > 604 && $height > 453) {
$jpeg_quality = 90;
$src = "images/users/status/".$org_name;
$ext= pathinfo($src, PATHINFO_EXTENSION);
$targ_h = 453;
$targ_w = 604;
$path_thumbs = "images/users/status/";
$thumb_path = $path_thumbs . '/' . $newfilename;

if($ext == "jpg" OR $ext == "jpeg" OR $ext == "JPG"){
    $img_r = imagecreatefromjpeg($src);
}elseif($ext == "png" OR $ext == "PNG"){
    $img_r = imagecreatefrompng($src);
}elseif($ext == "gif" OR $ext == "GIF"){ 
    $img_r = imagecreatefromgif($src);
}
$dst_r = ImageCreateTrueColor( $targ_w, $targ_h );

imagejpeg($dst_r,$thumb_path,$jpeg_quality);

unlink($move_me);
}

D'abord, il télécharge le fichier avec les dimensions d'origine et tout, et puis après il vérifie les dimensions et redimensionne puis, et délie (supprimer) l'original ..

Maintenant, je ne sais pas quoi, mais en quelque sorte à la procédure de modification de taille, il va mal et je ne reçois que un carré noir dans les dimensions 604x453 en sortie ..

Qu'est-ce que je manque, comment puis-je résoudre ce problème?

Était-ce utile?

La solution

Entre vos lignes ImageCreateTrueColor et imagejpeg, vous avez besoin quelque chose comme ceci:

imagecopyresampled($dst_r, $img_r, 0, 0, 0, 0, $targ_w, $targ_h, $width, $height);

Consultez le manuel PHP imagecopyresampled() .

Votre ancien code a été crée essentiellement une toile vierge de la bonne taille, puis en créant votre « carré noir » de celui-ci.

Vous devriez aussi utiliser getimagesize() pour déterminer quel type d'image a été téléchargés, au lieu d'utiliser l'extension de fichier.

  

Index 2 est l'un des IMAGETYPE_XXX   constantes indiquant le type de la   image.

La raison est qu'il est tout à fait plausible qu'une image est téléchargée qui est appelée file.jpg, mais il est en fait un fichier .png -. getimagesize() examine les octets dans l'image pour déterminer quel est son format

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top