plugins – ¿Cómo puedo hacer que add_image_size () recorte desde la parte superior?

Pregunta:

Tengo una serie de publicaciones, todas con imágenes destacadas, pero necesito poder personalizar la esquina superior derecha del recorte. En este caso, necesito que se recorten desde la parte superior derecha, pero sería útil saber también cómo colocar ese punto yo mismo.

En la actualidad, la función add_image_size () está recortando desde el centro de la imagen. ¡¡No siempre bonito !!

Respuesta:

La generación de imágenes intermedias es extremadamente rígida. image_resize() mantiene cerca del código y carece por completo de ganchos.

wp_generate_attachment_metadata única opción para esto es conectarse a wp_generate_attachment_metadata y sobrescribir la imagen generada por WP con la suya propia (que necesitará un poco de una image_resize() ).

Necesito esto para trabajar, así que podría compartir algún código más tarde.

Ok, aquí hay un ejemplo aproximado, pero funcional. Tenga en cuenta que configurar el recorte de esta manera requiere la comprensión de 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;
}

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım