从顶部裁剪,而不是从中心裁剪

Posted

技术标签:

【中文标题】从顶部裁剪,而不是从中心裁剪【英文标题】:Crop from top, not from center 【发布时间】:2015-04-13 14:41:29 【问题描述】:

我有一个从中心裁剪图像的脚本,有没有办法让它从图像顶部裁剪?我试图这样做,但我只是弄乱了代码。

这是裁剪的脚本:

if($crop)
    $new_image = imagecreatetruecolor($width, $height);

    if($current_ratio > $desired_ratio_after)
        $new_width = $old_width * $height / $old_height;
    

    if($current_ratio > $desired_ratio_before && $current_ratio < $desired_ratio_after)
        if( $old_width > $old_height )
            $new_height = max( $width, $height );
            $new_width = $old_width * $new_height / $old_height;
        
        else
            $new_height = $old_height * $width / $old_width;
        
    

    if($current_ratio < $desired_ratio_before)
        $new_height = $old_height * $width / $old_width;
    

    $width_ratio = $old_width / $new_width;
    $height_ratio = $old_height / $new_height;

    $src_x = floor( ( ( $new_width - $width ) / 2 ) * $width_ratio );
    $src_y = round( ( ( $new_height - $height ) / 2 ) * $height_ratio );

【问题讨论】:

【参考方案1】:

我假设您不想从顶部裁剪(这意味着移除顶部),而是要裁剪以使顶部保持不变?那么我很确定通过设置$src_y = 0 将意味着夺冠。

如果您想从顶部裁剪,即只保留底部,那么$src_y = $old_height - $new_height 可能会成功。

所有这一切都假设$src_y 是原始图像中的开始 Y 坐标。

【讨论】:

谢谢,第一个是对的。有效。谢谢!

以上是关于从顶部裁剪,而不是从中心裁剪的主要内容,如果未能解决你的问题,请参考以下文章

通过 GD 裁剪图像并粘贴顶部

在响应式全宽滑块中将图像裁剪到中心

如何让图像在中心裁剪

jcrop - 中心的默认裁剪选择

从中心 PHP 裁剪图像

如何方形裁剪 Flutter 相机预览