Tôi đã tìm thấy một vài điều trên web về PHP + GD liên quan đến thao tác hình ảnh, nhưng dường như không có gì cho tôi những gì tôi đang tìm kiếm.php GD thêm đệm vào hình ảnh
Tôi có ai đó tải lên hình ảnh của bất kỳ thứ nguyên nào, tập lệnh tôi đã viết đổi kích thước hình ảnh thành không quá 200px chiều rộng 200px trong khi vẫn duy trì tỷ lệ khung hình. Vì vậy, hình ảnh cuối cùng có thể là 150px x 200px chẳng hạn. Những gì tôi muốn làm là sau đó thao tác các hình ảnh hơn nữa và thêm một thảm quanh hình ảnh để pad nó đến 200px x 200px trong khi không ảnh hưởng đến hình ảnh ban đầu. Ví dụ:
Code tôi đã để hình ảnh thay đổi kích cỡ là ở đây, tôi đã thử một vài điều, nhưng tôi chắc chắn có một vấn đề thực hiện quá trình thứ cấp thêm padding .
list($imagewidth, $imageheight, $imageType) = getimagesize($image);
$imageType = image_type_to_mime_type($imageType);
$newImageWidth = ceil($width * $scale);
$newImageHeight = ceil($height * $scale);
$newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
switch($imageType) {
case "image/gif":
$source=imagecreatefromgif($image);
break;
case "image/pjpeg":
case "image/jpeg":
case "image/jpg":
$source=imagecreatefromjpeg($image);
break;
case "image/png":
case "image/x-png":
$source=imagecreatefrompng($image);
break;
}
imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
imagejpeg($newImage,$image,80);
chmod($image, 0777);
Tôi nghĩ mình cần sử dụng imagecopy()
ngay sau cuộc gọi imagecopyresampled()
. Bằng cách đó, hình ảnh đã là kích thước tôi muốn, tôi chỉ cần tạo một hình ảnh chính xác 200 x 200 và dán $ newImage vào giữa (vert và horiz) của nó. Tôi có cần phải tạo một hình ảnh hoàn toàn mới và hợp nhất hai hình ảnh đó không, hoặc có cách nào để tạo hình ảnh mà tôi đã tạo ra ($newImage
) không? Cảm ơn trước, tất cả các hướng dẫn Tôi đã tìm thấy đã dẫn tôi hư không, và là người duy nhất được áp dụng tôi tìm thấy trên SO là cho android :(
thông tin chi tiết về tuyên bố chuyển đổi rất tuyệt, điều đó chắc chắn hiệu quả hơn tuyên bố chuyển đổi của tôi. Tôi đang bối rối về imagecopyresampled mặc dù. Việc thay đổi kích thước của hình ảnh gốc hoàn tất và hoạt động, nó chỉ dán nó lên nền 200x200 px. Sự hiểu biết của tôi là imagecopyresampled sẽ thay đổi kích thước hình ảnh ban đầu một lần nữa? – MaurerPower
xem câu trả lời cập nhật – bumperbox
Điều đó hiệu quả! Tôi đã kết thúc bằng cách sử dụng một chút của một phiên bản sửa đổi để có được kết quả chính xác tôi muốn, nhưng điều này đã cho tôi chắc chắn trên con đường bên phải! Cảm ơn bumberbox! Được chấp nhận và upvoted! – MaurerPower