Мне нужен способ (используя встроенные библиотеки PHP), чтобы вытащить изображение из URL и сохранить его на локальный диск с измененным/масштабированным WIDTH до 150 пикселей. Я пытался это:PHP - создать эскиз с url
Creating a thumbnail from an uploaded image
function makeThumbnails($updir, $img, $id)
{
$thumbnail_width = 134;
$thumbnail_height = 189;
$thumb_beforeword = "thumb";
$arr_image_details = getimagesize("$updir" . $id . '_' . "$img"); // pass id to thumb name
$original_width = $arr_image_details[0];
$original_height = $arr_image_details[1];
if ($original_width > $original_height) {
$new_width = $thumbnail_width;
$new_height = intval($original_height * $new_width/$original_width);
} else {
$new_height = $thumbnail_height;
$new_width = intval($original_width * $new_height/$original_height);
}
$dest_x = intval(($thumbnail_width - $new_width)/2);
$dest_y = intval(($thumbnail_height - $new_height)/2);
if ($arr_image_details[2] == 1) {
$imgt = "ImageGIF";
$imgcreatefrom = "ImageCreateFromGIF";
}
if ($arr_image_details[2] == 2) {
$imgt = "ImageJPEG";
$imgcreatefrom = "ImageCreateFromJPEG";
}
if ($arr_image_details[2] == 3) {
$imgt = "ImagePNG";
$imgcreatefrom = "ImageCreateFromPNG";
}
if ($imgt) {
$old_image = $imgcreatefrom("$updir" . $id . '_' . "$img");
$new_image = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
imagecopyresized($new_image, $old_image, $dest_x, $dest_y, 0, 0, $new_width, $new_height, $original_width, $original_height);
$imgt($new_image, "$updir" . $id . '_' . "$thumb_beforeword" . "$img");
}
}
Это выглядит очень многообещающим, но я не могу понять, как использовать его, а затем будет ли он делать то, что я хочу. Касается/потребность:
- Что эта PARAMS означает:
($updir, $img, $id)
- это$updir
расположение файла? Или место, где я хочу, чтобы оно было сохранено? Является ли$img
файловым дескриптором или именем файла? Или новое имя файла? Что такое$id
? Автор не использовал образец. - Функция, как мне кажется, требует указания ШИРИНЫ и ВЫСОТЫ. Я только хочу указать WIDTH и позволить росту быть пропорциональным.
- мне нужно тянуть изображения через 2 различных типов URL: (1) Основная http://foo ..., и (2) синтаксических данные:
data:image/jpeg;base64,/9j/4AAQ....
- В идеале я хотел бы преобразовать эти изображения во всех случаях вниз к сжатому миниатюре jpeg (ширина 150 пикселей, любая высота), даже если исходное изображение не было в формате jpg.
Каков наилучший способ для этого?
Ну, сценарий, который вы разместили, похож на его базы при загрузке изображений на сервер, где он запускается там, где '$ updir' будет путь к каталогу, содержащему их, и' $ id' и '$ img' являются частью имени файла для какого-то соглашения об именах. Короче говоря, это будет работать только после того, как вы загрузите/скопируете файлы. – prodigitalson
взгляните на http://stackoverflow.com/a/27362839/3641016, я предоставил небольшую вспомогательную функцию для изменения размера изображения в разных режимах. –
Рафаэль, ты прибил его. Хотите отправить свой ответ, чтобы я мог дать вам щедрость? – HerrimanCoder