gpt4 book ai didi

PHP - 从 url 创建缩略图

转载 作者:可可西里 更新时间:2023-10-31 22:53:42 24 4
gpt4 key购买 nike

我需要一种方法(使用内置的 PHP 库)从 URL 中提取图像并将其保存到本地磁盘,并将宽度调整为 150 像素。我一直在尝试这个:

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");
}
}

这看起来很有前途,但我不知道如何使用它,以及它是否会做我想做的事。关注点/需求:

  1. 这些参数是什么意思:($updir, $img, $id) -- $updir 是文件的位置吗?或者我想要它保存的位置? $img 是文件句柄还是文件名?还是文件的新名称? $id 有什么用?作者没有给出任何示例用法。
  2. 函数似乎要求我指定 WIDTH 和 HEIGHT。我只想指定 WIDTH,让高度成比例。
  3. 我需要通过 2 种不同类型的 URL 提取图像:(1) 基本的 http://foo ...,以及 (2) 数据语法:data:image/jpeg;base64,/9j/4AAQ....
  4. 理想情况下,我希望在所有情况下都将这些图像转换为压缩的 jpeg 缩略图(150 像素宽,任意高度),即使原始图像不是 jpg 格式也是如此。

完成此任务的最佳方法是什么?

最佳答案

只需这样做:

function Thumbnail($url, $filename, $width = 150, $height = true) {

// download and create gd image
$image = ImageCreateFromString(file_get_contents($url));

// calculate resized ratio
// Note: if $height is set to TRUE then we automatically calculate the height based on the ratio
$height = $height === true ? (ImageSY($image) * $width / ImageSX($image)) : $height;

// create image
$output = ImageCreateTrueColor($width, $height);
ImageCopyResampled($output, $image, 0, 0, 0, 0, $width, $height, ImageSX($image), ImageSY($image));

// save image
ImageJPEG($output, $filename, 95);

// return resized image
return $output; // if you need to use it
}

像这样使用它:

Thumbnail("http://cdn.cutestpaw.com/wp-content/uploads/2013/01/l-Cute-Kitten.jpg", "kitten.jpg");

这里的技巧是对传入流使用 PHP 的内部自动文件检测,ImageCreateFromString

处理得很好

关于PHP - 从 url 创建缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28846006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com