PHP изменить размер с URL - PullRequest
       16

PHP изменить размер с URL

1 голос
/ 12 декабря 2011

Я отредактировал базовый скрипт php.net для изменения размера, чтобы работать для моих спецификаций.Он работает с локальными файлами, но когда дело доходит до удаленных файлов (это попытка изменить размеры изображений из блога WordPress, чтобы перейти к сообщениям в блоге), я не могу понять, как захватить изображение, манипулировать им, а затем вывести его.

// The file
$filename = 'like-father-like-son.jpg';

// Set a maximum height and width
$width = 150;
$height = 150;

// Content type
header('Content-Type: image/jpeg');

list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
imagejpeg($image_p, null, 100);

Вышеприведенный скрипт работает, но я хочу, чтобы $ filename получил доступ: http://USERNAME.files.wordpress.com/DATE/like-father-like-son.jpg.


РЕДАКТИРОВАТЬ: Этот скрипт работает нормально.Это была проблема с сетью, в которой я пытался запустить WAMP локально.Это научит меня пытаться делать это во время обеда на работе!Извиняюсь за трату чьего-то времени и СПАСИБО тем, кто внес свой вклад.

Пожалуйста, не стесняйтесь использовать приведенный ниже скрипт, он изменяет размер изображения из файла или URL, чтобы он соответствовал заявленным размерам (если егоjpeg) и сохраняет то же соотношение сторон.

РЕДАКТИРОВАТЬ 2: Я думал, что просто добавлю это здесь, так как у меня были проблемы с его реализацией.У меня лично были еще две проблемы, я хотел использовать это для создания изображения КАК ХОРОШО, как печать некоторого текста с заголовком (Content-Type: image / jpeg);не работаетЯ также хотел, чтобы скрипт изменения размера выполнялся с несколькими изображениями.

Решение. Поместите сценарий изменения размера изображения в отдельный файл (imageresizer.php) и используйте данные GET для отправки URL-адреса изображения.Таким образом, верхняя часть сценария изменения размера изображения теперь будет выглядеть так:

// The file
$filename = $_GET['imagesrc'];

, а в нижней части у меня будет возвращаемое изображение:

//Output
return (imagejpeg($image_p,null,100));

Сценарий для ссылки и отображения изображений (тот, кто отправляет данные в Image Resizer) будет иметь что-то похожее на это:

$imagesrc = "put your image sourcing script here";
echo '<img src="imageresizer.php?' . $imagesrc . '" />';

Надеюсь, это поможет кому-то там!

Ответы [ 2 ]

1 голос
/ 12 декабря 2011
<?php
    $remote_file = 'http://l.yimg.com/g/images/soup_hero-04.jpg';
    $new_width = 100;
    $new_height = 100;
    list($width, $height) = getimagesize($remote_file);
    $image_p = imagecreatetruecolor($new_width, $new_height);
    $image = imagecreatefromjpeg($remote_file);        
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    header('Content-Type: image/jpeg'); 
    imagejpeg($image_p, NULL, 100);
    imagedestroy($image_p);
?>

ПРИМЕЧАНИЕ: не допускайте пробелов до или после тегов php

0 голосов
/ 12 декабря 2011

Да, похоже, imagecreatefromjpeg принимает в качестве URL-адреса параметра, посмотрите http://www.php.net/manual/en/function.imagecreatefromjpeg.php

imagecreatefromjpeg - создайте новое изображение из файла или URL

getimagesize работает и с URL, suport был добавлен в php 4.0.5 http://www.php.net/manual/en/function.getimagesize.php

4.0.5    URL support was added.
...