我正在尝试调整大小并裁剪@imagecopyresampled原始宽高比的图像.
这个想法是:1)我修复了缩略图的尺寸(fe 300x40)2)裁剪开始到高度的中心

我试图在stackoverflow上阅读文档和许多其他问题,但没有结果.谁能帮帮我?我的实际代码如下:
//$img_height, $img_width [original size of the image]
$thumb_width = 300;
$thumb_height = 40;
$new_img = @imagecreatetruecolor($thumb_width, $thumb_height);
$middle = floor($img_height/2);
$src_x = 0;
$src_y = $middle-($thumb_width/2);
$src_w = $img_width;
$aspectRatio = $img_width/$thumb_width;
//$src_h = ?????
$imgCopyRes = @imagecopyresampled(
$new_img, $src_img,
0, 0,
$src_x, $src_y,
$thumb_width, $thumb_height,
$src_w, $src_h);
Run Code Online (Sandbox Code Playgroud)
编辑:
非常感谢@Joshua Burns,阅读你的课程并编辑你的代码我找到了解决方案而不包括整个文件.
码:
$target_width = 300;
$target_height = 40;
$new_img = @imagecreatetruecolor($target_width, $target_height);
$width_ratio = $target_width / $img_width;
$height_ratio = $target_height / $img_height;
if($width_ratio > $height_ratio) {
$resized_width = $target_width;
$resized_height = $img_height * $width_ratio;
} else {
$resized_height = $target_height;
$resized_width = $img_width * $height_ratio;
}
// Drop decimal values
$resized_width = round($resized_width);
$resized_height = round($resized_height);
// Calculations for centering the image
$offset_width = round(($target_width - $resized_width) / 2);
$offset_height = round(($target_height - $resized_height) / 2);
$imgCopyRes = @imagecopyresampled(
$new_img, $src_img,
$offset_width, $offset_height,
0, 0,
$resized_width, $resized_height,
$img_width, $img_height);
Run Code Online (Sandbox Code Playgroud)
好吧,这对于您的需求来说可能有点臃肿,但它可以完成工作并且做得很好......
首先,将此类包含或粘贴到您的 PHP 代码中: http: //pastebin.com/dnmiUVmk
然后,使用与以下类似的类:
<?php
// Replace 'picture' w/ whatever the name of the file upload.
// Alternately, specify an absolute path to an image already on the server.
$upload_image_tmp_filename = $_FILES['picture']['tmp_name'];
$saveas_image_filename = 'my_resized_image.png';
$max_width = 300;
$max_height = 40;
// If there was a problem, an exception is thrown.
try {
// Load the image
$picture = New Image($upload_image_tmp_filename);
// Save the image, resized.
$picture->saveFile($saveas_image_filename, $max_width, $max_height, True);
} catch(Exception $e) {
print $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2058 次 |
| 最近记录: |