Tôi cần một cách (bằng cách sử dụng PHP dựng sẵn) để kéo hình ảnh xuống từ URL và lưu nó vào đĩa cục bộ với WIDTH đã được chỉnh lại kích thước/thu nhỏ thành 150px. Tôi đã cố gắng này:PHP - tạo hình thu nhỏ từ 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");
}
}
Điều đó có vẻ rất hứa hẹn nhưng tôi không thể tìm ra cách để sử dụng nó, và sau đó cho dù nó sẽ làm những gì tôi muốn. Mối quan tâm/nhu cầu:
- Các tham số này có nghĩa là gì:
($updir, $img, $id)
- Có phải$updir
vị trí của tệp không? Hoặc vị trí tôi muốn lưu? Có phải$img
là một tệp xử lý hoặc tên tệp không? Hoặc tên mới của tệp?$id
là gì? Tác giả không đưa ra bất kỳ cách sử dụng mẫu nào. - Hàm dường như yêu cầu tôi chỉ định WIDTH và HEIGHT. Tôi chỉ muốn chỉ định WIDTH và để chiều cao được tỷ lệ thuận.
- tôi cần phải kéo hình ảnh trên 2 loại khác nhau của URL: (1) Các cơ bản http://foo ..., và (2) cú pháp dữ liệu:
data:image/jpeg;base64,/9j/4AAQ....
- Lý tưởng nhất là tôi muốn chuyển đổi những hình ảnh này trong mọi trường hợp xuống với hình thu nhỏ jpeg nén (chiều rộng 150px, chiều cao bất kỳ), ngay cả khi hình ảnh gốc không ở định dạng jpg.
Cách tốt nhất để thực hiện việc này là gì?
Cũng kịch bản bạn đăng sẽ giống như cơ sở của nó trên hình ảnh tải lên máy chủ đang chạy trên đó '$ updir' sẽ là đường dẫn đến thư mục chứa chúng và' $ id' và '$ img' là một phần của tên tệp đối với một số loại quy ước đặt tên. Vì vậy, trong ngắn hạn này sẽ chỉ làm việc một khi bạn có các tập tin tải về/sao chép. – prodigitalson
có một cái nhìn tại http://stackoverflow.com/a/27362839/3641016, tôi đã cung cấp một chức năng trợ giúp nhỏ để thay đổi kích thước hình ảnh với các chế độ khác nhau. –
Raphael, bạn đóng đinh nó. Muốn đăng câu trả lời của bạn để tôi có thể cung cấp cho bạn tiền thưởng? – HerrimanCoder