2013-01-12 3 views
0

Possible en double:
How to convert all images to JPG format in PHP?php convertir image utilisateur en jpg

Je suis en train de passer le nom d'utilisateur dans le nom de fichier et que le fichier se termine par .jpg Ainsi, la sortie serait être "user-mycoolnewimage.jpg". Toutes les suggestions sur la façon de faire cela actuellement sont des changements à "randnumber-mycoolnewimage.png" qui n'est pas ce que je veux. Le nombre aléatoire n'aide pas les journaux du serveur et l'image doit se terminer par jpg car il est en cours de conversion.

$file = rand(0, 10000000).$_FILES['t1']['name']; 
if (move_uploaded_file($_FILES['t1']['tmp_name'], $file)) { 
    if($fp = fopen($file,"rb", 0)) { 
     $picture = fread($fp,filesize($file)); 
     fclose($fp); 
     $image = imagecreatefrompng($file); 
     imagejpeg($image, $file, 70); 
     imagedestroy($image); 
     $tag1 = '<img src="'.$file.'" alt="" class="default" />'; 
     //unlink($file);   
    } 
} 

Répondre

1

Je pense que ce que vous cherchez est basename (documenté here)

Une chose que vous pouvez faire est de retravailler un peu votre script pour avoir quelque chose dans lequel vous créez deux différentes variables $file, un tenant la initial png et l'autre contenant le chemin jpeg. Vous aurez également besoin de unlink votre png une fois fait:

$source = $username . "-" . $_FILES['t1']['name']; 
$destination = $username . "-" . basename($_FILES['t1']['name']) . ".jpg"; 
if (move_uploaded_file($_FILES['t1']['tmp_name'], $source)) { 
    if($fp = fopen($source,"rb", 0)) { 
     $picture = fread($fp,filesize($source)); 
     fclose($fp); 
     $image = imagecreatefrompng($source); 
     imagejpeg($image, $destination, 70); 
     imagedestroy($image); 
     $tag1 = '<img src="'.$file.'" alt="" class="default" />'; 
     unlink($source);   
    } 
}