问题描述

我有一系列的帖子,都有精选的图片,但是我需要能够自定义裁剪右上角。在这种情况下,我需要他们从右上方裁剪,但是也可以自己定位这一点。

目前, add_image_size() 功能正在从图像的中心拍摄。不总是漂亮!

最佳解决方案

中间图像生成非常僵硬。 image_resize()保持接近代码,完全没有钩子。

相当多的选择是挂钩到 wp_generate_attachment_metadata,并用你自己的 WP-generated 映像 (这将需要一个 image_resize()叉) 。

我需要这个工作,所以我可以稍后分享一些代码。

好的,这里是粗糙的,但是工作的例子。请注意,以这种方式设置裁剪需要了解 imagecopyresampled()

add_filter('wp_generate_attachment_metadata', 'custom_crop');

function custom_crop($metadata) {

    $uploads = wp_upload_dir();
    $file = path_join( $uploads['basedir'], $metadata['file'] ); // original image file
    list( $year, $month ) = explode( '/', $metadata['file'] );
    $target = path_join( $uploads['basedir'], "{$year}/{$month}/".$metadata['sizes']['medium']['file'] ); // intermediate size file
    $image = imagecreatefromjpeg($file); // original image resource
    $image_target = wp_imagecreatetruecolor( 44, 44 ); // blank image to fill
    imagecopyresampled($image_target, $image, 0, 0, 25, 15, 44, 44, 170, 170); // crop original
    imagejpeg($image_target, $target, apply_filters( 'jpeg_quality', 90, 'image_resize' )); // write cropped to file

    return $metadata;
}

次佳解决方案

WordPress codex 有以下答案。

Set the image size by cropping the image and defining a crop position:

add_image_size( 'custom-size', 220, 220, array( 'left', 'top' ) ); // Hard crop left top 

When setting a crop position, the first value in the array is the x axis crop position, the second is the y axis crop position.

x_crop_position accepts ‘left’ ‘center’, or ‘right’. y_crop_position accepts ‘top’, ‘center’, or ‘bottom’. By default, these values default to ‘center’ when using hard crop mode.

而且 codex 也引用了一个页面来显示作物位置的作用。

http://havecamerawilltravel.com/photographer/wordpress-thumbnail-crop

第三种解决方案

我已经开发出了一个解决这个问题的方案,它不需要攻击内核:http://bradt.ca/archives/image-crop-position-in-wordpress/

我也提交了一个补丁到核心:http://core.trac.wordpress.org/ticket/19393

将自己添加为机票上的 Cc,以显示您将其添加到核心的支持。

第四种方案

您可以使用插件 Thumbnail Crop Position 选择缩略图的裁剪位置。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。