0

I'm receiving Images from URLs and I would like to save these images into a new directory, in three different sizes. I'm already getting the URLs here, now I just need a way to resize each image, with a specific height and width.

I dont want to resize uploaded images, only Images from a specific URL.

My code:

$content = file_get_contents('http://www.joomlaworks.net/images/demos/galleries/abstract/7.jpg');
$name = "http://www.joomlaworks.net/images/demos/galleries/abstract/7.jpg";
$parts = explode('.', $name);
$new_url = rand(0, pow(10, 5)) . '_' . time() . '.' . $parts[count($parts) - 1];
file_put_contents(DIRECTORY.'/' . $new_url , $content);

How can I do that? Thanks.

Michael Jackson
  • 356
  • 3
  • 18
  • ImageMagick is a powerful tool for processing images: http://php.net/manual/en/book.imagick.php – Risadinha Jun 13 '15 at 14:13
  • possible duplicate of [PHP upload and resize image](http://stackoverflow.com/questions/2159897/php-upload-and-resize-image) – fuesika Jun 13 '15 at 14:29
  • possible duplicate of [Resize image PHP?](http://stackoverflow.com/questions/9650572/resize-image-php) – h2ooooooo Jun 13 '15 at 14:37

1 Answers1

0

here is the solution based on imagecopyresampled (GD library) http://php.net/manual/en/function.imagecopyresampled.php

$content = file_get_contents('http://www.joomlaworks.net/images/demos/galleries/abstract/7.jpg');
$name = "http://www.joomlaworks.net/images/demos/galleries/abstract/7.jpg";
$parts = explode('.', $name);
$new_url = rand(0, pow(10, 5)) . '_' . time() . '.' . $parts[count($parts) - 1];
file_put_contents(DIRECTORY.'/' . $new_url , $content);

resizeImage($new_url, DIRECTORY.'/1_' . $new_url, 100, 100);
resizeImage($new_url, DIRECTORY.'/2_' . $new_url, 200, 200);
resizeImage($new_url, DIRECTORY.'/3_' . $new_url, 300, 300);

function resizeImage($source, $dest, $new_width, $new_height)
{
    list($width, $height) = getimagesize($source);
    $image_p = imagecreatetruecolor($new_width, $new_height);
    $image = imagecreatefromjpeg($source);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    imagejpeg($image_p, $dest, 100);
}
vitr
  • 6,766
  • 8
  • 30
  • 50