Làm thế nào để mở rộng hình thu nhỏ bài đăng nổi bật?


11

Tình huống là thế này: Tôi đang sử dụng plugin Video Thumbnails để tự động lấy và đặt hình thu nhỏ youtube / vimeo làm hình ảnh nổi bật của bài đăng. Vấn đề là kích thước hình thu nhỏ youtube / vimeo mặc định chỉ nhỏ hơn một chút so với chiều rộng nội dung chính của chủ đề của tôi.

Vì vậy, những gì tôi cần là mở rộng chúng. Nếu tôi đi đến Thư viện phương tiện, tôi có thể chỉnh sửa từng hình ảnh theo cách thủ công, sau đó đặt chiều rộng chính xác của mình và WordPress tăng tỷ lệ vừa phải (tôi không bận tâm rằng chất lượng kém hơn một chút). Vậy có cách nào để WP tự động làm điều đó mỗi khi hình ảnh được tải lên không?

Đây là kích thước hình ảnh được xác định của tôi: add_image_size('post-full', 688, 320, true);kích thước ngón tay cái Vimeo là 640x320.


1
Đây là một plugin tôi đã viết để nâng cấp hình thu nhỏ, dựa trên giải pháp bằng levi và sửa lỗi bằng jackrugile. wordpress.org/support/plugin/thumbnail-upscale
khromov

Câu trả lời:


20

Bạn có thể sử dụng hàm image_resize của Wordpress để phóng to hình ảnh. Wordpress cung cấp một hook có tên " image_resize_dimensions " mà bạn có thể sử dụng để ghi đè cài đặt cắt xén mặc định. Đây là một chức năng sửa đổi sẽ hỗ trợ mở rộng:

function image_crop_dimensions($default, $orig_w, $orig_h, $new_w, $new_h, $crop){
    if ( !$crop ) return null; // let the wordpress default function handle this

    $aspect_ratio = $orig_w / $orig_h;
    $size_ratio = max($new_w / $orig_w, $new_h / $orig_h);

    $crop_w = round($new_w / $size_ratio);
    $crop_h = round($new_h / $size_ratio);

    $s_x = floor( ($orig_w - $crop_w) / 2 );
    $s_y = floor( ($orig_h - $crop_h) / 2 );

    return array( 0, 0, (int) $s_x, (int) $s_y, (int) $new_w, (int) $new_h, (int) $crop_w, (int) $crop_h );
}

Bây giờ móc hàm này như vậy:

add_filter('image_resize_dimensions', 'image_crop_dimensions', 10, 6);

Khi đã xong, bạn có thể sử dụng hàm image_resize để chia tỷ lệ hình ảnh lên hoặc xuống theo yêu cầu.

$cropped_image = image_resize($image_filepath, $width, $height, true);

Tôi đang sử dụng phương pháp này tuy nhiên khi tôi thử và tạo hình ảnh bị cắt thì tôi chỉ gặp lỗi: Trình chỉnh sửa hình ảnh Lưu thất bại - có ý tưởng nào không?
Felix đêm

Vẫn hoạt động tuyệt vời vào tháng 7 năm 2015 với Wordpress 4.1.5. Chính xác những gì tôi cần để đảm bảo hình ảnh nhỏ được thu nhỏ cho Hình ảnh nổi bật của bài đăng của tôi.
Mark Rummel

Đối với những người muốn hỗ trợ tùy chọn vị trí cắt, hãy thêm đoạn mã sau ngay trước khi trả về hàm: if( is_array( $crop ) ) { if( $crop[ 0 ] === 'left' ) { $s_x = 0; } else if( $crop[ 0 ] === 'right' ) { $s_x = $orig_w - $crop_w;} if( $crop[ 1 ] === 'top' ) { $s_y = 0; } else if( $crop[ 1 ] === 'bottom' ) { $s_y = $orig_h - $crop_h; } }
jackrugile 24/07/2015

Vẫn hoạt động tuyệt vời vào tháng 4 năm 2019 với Wordpress 5.1.1. Tôi sử dụng nó để buộc các hình ảnh cao cấp nhỏ hơn mong muốn tùy chỉnh của tôi add_image_size. Cùng với plugin Regenerate Thumbnails.
Mtxz

Làm thế nào để làm cho nó hoạt động với add_image_sizechức năng?
Gediminas

0

cách dễ nhất là thêm kích thước hình ảnh với 640x298 và sử dụng css để thay đổi kích thước. vì nó chỉ là một quy mô nhỏ, quy mô trình duyệt sẽ hoạt động khá tốt.

thật không may, tất cả các plugin tôi biết không cung cấp tính năng nâng cấp hình ảnh, chỉ tạo các kích thước hình ảnh nhỏ hơn, vì vậy nếu bạn muốn có 688x320 trên máy chủ của mình, bạn sẽ phải chỉnh sửa một trong các plugin hiện có.

nếu bạn đã cài đặt Imagick, bạn có thể thay đổi plugin của mình trong tệp video-Miniatureails.php trên dòng 325, tạo phiên bản lớn hơn của hình thu nhỏ, sử dụng mã này:

$image_big = new Imagick();
$image_big->setOption('jpeg:size', '688x344');
$image_big->readImage($new_thumbnail);

$upload = wp_upload_bits( basename( $new_thumbnail ), null, $image_big );

và để wordpress tạo hình thu nhỏ nhỏ hơn từ nó (cắt chiều cao). Hãy chắc chắn để tạo các hình ảnh khác nhau cho các nền tảng video khác nhau trong Mã hình ảnh của bạn!


Tôi nghĩ rằng tôi sẽ sửa lỗi CSS ngay bây giờ, đây thực sự là cách dễ nhất / nhanh nhất để xử lý tình huống của tôi. Tôi cũng đã kiểm tra các tệp lõi WP và có vẻ như hàm thay đổi kích thước sử dụng min (); để xác định chiều rộng / chiều cao tối thiểu và không có móc để sửa đổi điều đó, vì vậy nó sẽ không nâng cấp hình ảnh của tôi khi tải lên.
evaqas

Có một hook mà bạn có thể sử dụng gọi là "image_resize_dimensions" sẽ cho phép bạn viết lại hàm mà không cần min ().
levi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.