2015-04-03 1 views
1

J'essaye de redimensionner une image que je copie depuis Flickr. Mais il semble que je reçois la taille d'origine elle-même. Voici mon code:L'image ne peut pas être redimensionnée en utilisant PHP

$img = Input::get('FlickrUrl'); 
$filename = gmdate('Ymdhis', time()); 
copy($img, $_SERVER["DOCUMENT_ROOT"].'/upload/'.$filename.'.jpeg'); 
$newImg = '/upload/'.$filename.'.jpeg'; 
list($CurWidth, $CurHeight) = getimagesize($_SERVER["DOCUMENT_ROOT"].$newImg); 

$width = $CurWidth; 
$height = $CurHeight; 
$image_ratio = $CurWidth/$CurHeight; 

//resize image according to container 
$container_width = 300; 
$container_height = 475; 

if($CurWidth > $container_width) 
{ 
    $CurWidth = $container_width; 
    $CurHeight = $CurWidth/$image_ratio; 
} 
if($CurHeight > $container_height) 
{ 
    $CurHeight = $container_height; 
    $CurWidth = $CurHeight * $image_ratio; 
} 

if($CurWidth < $container_width) 
{ 
    $CurWidth = $container_width; 
    $CurHeight = $CurWidth/$image_ratio; 
} 
if($CurHeight < $container_height){ 
    $CurHeight = $container_height; 
    $CurWidth = $CurHeight * $image_ratio; 
} 

$img_orginal = $_SERVER["DOCUMENT_ROOT"].'/upload/'.$filename.'.jpeg'; 
$img_org = ImageCreateFromJPEG($img_orginal); 
$NewCanves = imagecreatetruecolor($CurWidth, $CurHeight); 
imagecopyresized($NewCanves, $img_org, 0, 0, 0, 0, $CurWidth, $CurHeight, $width, $height); 
$finalImg = '/upload/'.$filename.'.jpeg'; 


return Response::json(["success"=>"true", "images"=>$finalImg, "width"=>$CurWidth, "height"=>$CurHeight]); 

d'abord copier l'image de l'URL, il enregistre dans mon serveur, puis essayer de le redimensionner. Impossible de comprendre ce qui ne va pas avec ce code.

+0

Vous beaucoup aider réponses possibles en réduisant votre code à son minimum pour reproduire votre problème. Dans le processus, vous pourriez même trouver que vous pouvez résoudre votre problème vous-même. – cmbarbu

Répondre

1

Le problème ici est que vous ne sauvegardez pas votre fichier. Après:

imagecopyresized($NewCanves, $img_org, 0, 0, 0, 0, $CurWidth, $CurHeight, $width, $height); 
$finalImg = '/upload/'.$filename.'.jpeg' 

vous devez ajouter:

imagejpeg($NewCanves, $finalImg); 

pour l'enregistrer dans le package système de fichiers

+0

Il me donne toujours la même taille. – user1012181

1

Essayez intervention/image avec une grande Laravel integration:

// open an image file 
$img = Image::make('FlickrUrl'); 

// now you are able to resize the instance 
$img->resize($container_width, $container_height); 

// finally we save the image as a new file 
$img->save('/upload/'.$filename.'.jpeg');  
+0

Ouais je l'ai utilisé :) Merci pour la suggestion. – user1012181