2015-04-03 6 views
1

Я пытаюсь изменить размер изображения, которое я копирую с Flickr. Но кажется, что я получаю оригинальный размер. Вот мой код:Изображение не может изменять размер с помощью 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]); 

Сначала я скопировать изображение из URL, сохраняет его в моем сервере, а затем пытается изменить его размер. Не могу понять, что не так с этим кодом.

+0

Вы бы очень помочь потенциальным ответы путем сокращения ваш код до минимума, чтобы воспроизвести вашу проблему. В этом процессе вы даже можете найти, что сами можете решить свою проблему. – cmbarbu

ответ

1

Проблема в том, что вы не сохраняете свой файл. После того, как:

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

следует добавить:

imagejpeg($NewCanves, $finalImg); 

, чтобы сохранить его в файловой системе

+0

Его все еще дает мне такой же размер. – user1012181

1

Попробуйте intervention/image пакет с большим 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

Да, я использовал его :) Спасибо за предложение. – user1012181