【问题标题】:Cropping any image down to 4:3 ratio将任何图像裁剪为 4:3 比例
【发布时间】:2015-02-12 20:51:44
【问题描述】:

我正在尝试修改上传脚本,目前我可以在调整大小时将图像裁剪为正方形 - 太好了!

但是我希望用户能够上传任何尺寸的图片,并让脚本创建 200x150、400x300、800x600 的缩略图/图片 - 4:3 的比例。

到目前为止我的代码是:

list($width,$height) = getimagesize($uploadedfile);

if ($thumb == 1){
if ($width > $height) {
  $y = 0;
  $x = ($width - $height) / 2;
  $smallestSide = $height;
} else {
  $x = 0;
  $y = ($height - $width) / 2;
  $smallestSide = $width;
}

// copying the part into thumbnail
$thumbSize = 200;
$tmp = imagecreatetruecolor($thumbSize, $thumbSize);
imagecopyresampled($tmp, $src, 0, 0, $x, $y, $thumbSize, $thumbSize, $smallestSide, $smallestSide);

// write thumbnail to disk
$write_thumbimage = $folder .'/thumb-'. $image;
 switch($ext){
  case "gif":
    imagegif($tmp,$write_thumbimage);
  break;
  case "jpg":
    imagejpeg($tmp,$write_thumbimage,100);
  break;
  case "jpeg":
    imagejpeg($tmp,$write_thumbimage,100);
  break;
  case "png":
    imagepng($tmp,$write_thumbimage);
  break;
 }

有谁知道所需的公式或可以指出正确的方向吗?

【问题讨论】:

  • 如果是您所追求的数学,要计算此纵横比的宽度和高度,请参阅可能的重复项。这是针对 C# 的,但是从代码中应该很清楚如何做到这一点。
  • @halfer - 我关注的是 PHP 中的代码解释,而不是 C#,所以几乎没有重复?
  • ^ 也就是说,它确实有帮助:-)
  • 希望如此 - 请记住,Stack Overflow 不是“为我编写代码”网站:-)

标签: php gd


【解决方案1】:

使用 C# 副本上的一些内容计算出逻辑:

$thumb_width = 200;
$thumb_height = 150;

$original_aspect = $width / $height;
$thumb_aspect = $thumb_width / $thumb_height;

if ( $original_aspect >= $thumb_aspect ) {
   $new_height = $thumb_height;
   $new_width = $width / ($height / $thumb_height);
} else {
   $new_width = $thumb_width;
   $new_height = $height / ($width / $thumb_width);
}

$tmp = imagecreatetruecolor( $thumb_width, $thumb_height );

// Resize and crop
imagecopyresampled($tmp,
                   $src,
                   0 - ($new_width - $thumb_width) / 2, // Center the image horizontally
                   0 - ($new_height - $thumb_height) / 2, // Center the image vertically
                   0, 0,
                   $new_width, $new_height,
                   $width, $height);

【讨论】:

    猜你喜欢
    • 2013-08-31
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 2015-05-29
    • 2012-01-07
    相关资源
    最近更新 更多