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;
}