AFAIK, WordPress solo genera miniaturas (por ejemplo, ‘grandes’) solo cuando el tamaño de imagen deseado es menor (y no cuando el tamaño objetivo sería el mismo).
yo suelo
add_image_size( 'referenzen-big', 627, 490, true );
Entonces, si mi cliente carga un archivo con 627x490px, se usará la imagen original.
Pero esto no se desea, ya que esta costumbre, de buena fe, carga las imágenes en el tamaño correcto y también con la mayor compresión .jpg posible. Esto da como resultado imágenes de alrededor de 300kB en este caso.
Una forma práctica, pero técnicamente no perfecta, sería pedirle que cargue sus imágenes en 628×490, es decir, 1 px más de ancho, lo que obligaría a cambiar la escala. No se aceptarán sugerencias como esta 🙂
Hasta ahora, he investigado los ganchos responsables de la creación de imágenes y rastreado la función responsable; Aquí está el último gancho que encontré:
image_make_intermediate_size()
esta es la función responsable del cambio de tamaño real:
image_resize_dimensions(). Incluso hay una línea que dice:
// if the resulting image would be the same size or larger we don't want to resize it
if ( $new_w >= $orig_w && $new_h >= $orig_h )
return false;
Entonces, ¿cómo puedo habilitar esta función de “forzar cambio de tamaño”?
daniel c
Aquí está la solución que está buscando, para colocarla en su archivo functions.php:
function thumbnail_upscale( $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 );
}
add_filter( 'image_resize_dimensions', 'thumbnail_upscale', 10, 6 );
Esto se encuentra aquí:
https://wordpress.stackexchange.com/questions/50649/how-to-scale-up-featured-post-thumbnail
Mejorará las imágenes y generará miniaturas para todos los tamaños de imagen. La única desventaja, que probablemente no sea una desventaja, es que no importa qué, obtendrá un archivo separado para cada tamaño de imagen para todas las imágenes cargadas… incluso si es un icono pequeño o algo así. Espero que esto ayude.
Si bien aún no es óptimo, ¿no sería mejor usar una biblioteca del lado del servidor como Timpulgar y luego proporcione la fuente original y use el parámetro ‘q’ (= calidad)?
Eso optimizaría la imagen, con el tamaño original.
Puede haber algunas advertencias, pero en realidad, cualquier cosa es mejor que modificar el núcleo.
Si el espacio en disco no es el problema, sino solo la velocidad de descarga como en mi caso…
El problema al que me enfrentaba era que el cliente no prestaba atención al tamaño o la dimensión de las cargas de imágenes destacadas. El tema es un tema responsivo y funciona bien con el rango de alturas de imagen y la escala al ancho de imagen deseado en la página. Por lo tanto, era posible cargar archivos muy grandes y no notar el tamaño si se estaba sentado en una red de alta velocidad.
Agregué tamaños de imagen personalizados, usé un complemento para forzar la regeneración y modifiqué el tema para mostrar el tamaño personalizado en su lugar.
-
¿Qué complemento usaste?
– sospechar
24/08/2013 a las 18:55
He tenido un problema similar: el sitio web de un cliente debería generar pulgares más grandes. Terminé creando un complemento con un editor de imágenes personalizado, como este:
require_once ABSPATH . WPINC . '/class-wp-image-editor.php';
require_once ABSPATH . WPINC . '/class-wp-image-editor-gd.php';
function im_add_image_editor($implementations) {
array_unshift($implementations, 'IM_Image_Editor_GD');
return $implementations;
}
add_filter('wp_image_editors', 'im_add_image_editor');
El IM_Image_Editor_GD extiende WP_Image_Editor_GD, cambia la función _resize (quién llama image_resize_dimensions
) para llamar a una versión interna de la misma, así:
class IM_Image_Editor_GD extends WP_Image_Editor_GD {
public function __destruct() {
parent::__destruct();
}
protected function _resize( $max_w, $max_h, $crop = false ) {
$dims = $this->image_resize_dimensions( $this->size['width'], $this->size['height'], $max_w, $max_h, $crop );
if ( ! $dims ) {
return new WP_Error( 'error_getting_dimensions', __('Could not calculate resized image dimensions'), $this->file );
}
list( $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) = $dims;
$resized = wp_imagecreatetruecolor( $dst_w, $dst_h );
imagecopyresampled( $resized, $this->image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h );
if ( is_resource( $resized ) ) {
$this->update_size( $dst_w, $dst_h );
return $resized;
}
return new WP_Error( 'image_resize_error', __('Image resize failed.'), $this->file );
}
protected function image_resize_dimensions($orig_w, $orig_h, $dest_w, $dest_h, $crop = false) {
// Copied original image_resize_dimensions and changed the test
}
}
¡Espero que esto ayude y lo siento por mi inglés!
Puedes gestionar con esta visita plugin https://wordpress.org/plugins/simple-image-sizes/
Tamaños de imagen simples
Este complemento permite crear tamaños de imagen personalizados para su sitio. Anule los tamaños de su tema directamente en la página de opciones de medios. Puedes regenerar todos los tamaños que acabas de crear y elegir cuál quieres regenerar. Ahora puede obtener todo el código para copiar y pegar en su archivo de tema de función. ¡Ahora puede usar los tamaños generados directamente en sus publicaciones e insertar imágenes en el tamaño correcto! Ahora eliges si quieres mostrar el tamaño en la imagen de inserción de la publicación. Ahora puede regenerar las imágenes una por una en el panel general ‘Medios’. Ahora puede regenerar las imágenes mediante una acción masiva en el panel general ‘Medios’. Ahora puede regenerar los tamaños de imagen en una sola página de edición de archivos adjuntos.
-
Respuesta completamente no relacionada; ¿Has leído mi pregunta?
– Sebastián Schmid
25 de diciembre de 2014 a las 3:00
-
Hola Sebastian, has probado este plugin codecanyon.net/item/theia-smart-thumbnails-for-wordpress/…
– Sabir Abdul Gafoor Shaikh
29 de marzo de 2015 a las 13:59
-
No. ¿Cómo crees que solucionaría mi problema? ¿Has entendido mi problema en absoluto? Lo siento, me estoy cansando de que la gente recomiende algunos complementos y códigos genéricos “set-custom-image-sizes”. Esa NO es la pregunta.
– Sebastián Schmid
1 de abril de 2015 a las 14:02
-
Hola Sebastian, entiendo perfectamente tu pregunta. Estoy tratando de darle la solución más cercana. 1. Complemento de tamaño de imagen simple: lo ayuda para el recorte normal y el recorte duro. Tamaño deseado requerido. Instale y verifique. 2. Complemento Codecanyon: te ayudará a guardar la imagen, con el aspecto exacto. El usuario puede recortar de la forma que desee. Solo le estamos dando la solución más cercana.
– Sabir Abdul Gafoor Shaikh
2 de abril de 2015 a las 7:21
csehasib
Los tamaños de imagen predeterminados de WordPress son “miniatura”, “mediano”, “grande” y “completo” (el tamaño de la imagen que cargó). Estos tamaños de imagen se pueden configurar en el panel de medios de administración de WordPress en Configuración > Medios. Así es como puedes usar estos tamaños predeterminados con the_post_thumbnail():
the_post_thumbnail(); // without parameter -> 'post-thumbnail'
the_post_thumbnail('thumbnail'); // Thumbnail (default 150px x 150px max)
the_post_thumbnail('medium'); // Medium resolution (default 300px x 300px max)
the_post_thumbnail('large'); // Large resolution (default 640px x 640px max)
the_post_thumbnail('full'); // Full resolution (original size uploaded)
the_post_thumbnail( array(100,100) ); // Other resolutions
véase también la documentación completa en http://codex.wordpress.org/Function_Reference/the_post_thumbnail
-
Respuesta completamente no relacionada; ¿Has leído mi pregunta?
– Sebastián Schmid
25 de diciembre de 2014 a las 3:00
-
Hola Sebastian, has probado este plugin codecanyon.net/item/theia-smart-thumbnails-for-wordpress/…
– Sabir Abdul Gafoor Shaikh
29 de marzo de 2015 a las 13:59
-
No. ¿Cómo crees que solucionaría mi problema? ¿Has entendido mi problema en absoluto? Lo siento, me estoy cansando de que la gente recomiende algunos complementos y códigos genéricos “set-custom-image-sizes”. Esa NO es la pregunta.
– Sebastián Schmid
1 de abril de 2015 a las 14:02
-
Hola Sebastian, entiendo perfectamente tu pregunta. Estoy tratando de darle la solución más cercana. 1. Complemento de tamaño de imagen simple: lo ayuda para el recorte normal y el recorte duro. Tamaño deseado requerido. Instale y verifique. 2. Complemento Codecanyon: te ayudará a guardar la imagen, con el aspecto exacto. El usuario puede recortar de la forma que desee. Solo le estamos dando la solución más cercana.
– Sabir Abdul Gafoor Shaikh
2 de abril de 2015 a las 7:21
Sebastián Schmid
No importa, cambié el núcleo. Me duele por dentro, pero para estos proyectos es la mejor solución.
-
Yo también estoy buscando una solución para este problema exacto. No quiero obligar a mis clientes a tener que usar Photoshop antes de cargar para reducir el lado de un archivo de imagen. ¿Alguna solución que no sea hackear el núcleo?
– Adam Christianson
28 de enero de 2013 a las 7:32
-
Gente, esto no es divertido… Yo, el todopoderoso abridor de hilos, recibí una votación negativa por publicar esa solución real que realmente funcionó. Gracias por su ayuda hasta ahora en la investigación de este problema, pero ahora vuelvo a mi propia cueva…
– Sebastián Schmid
25 de marzo de 2013 a las 23:32
-
Sin mencionar que cambiar el núcleo de WordPress no ayuda una vez que actualiza su núcleo. Cambiar el núcleo nunca es una solución adecuada… siempre hay un gancho en alguna parte, solo tienes que saber dónde buscar 🙂
– Daniel C.
18 de noviembre de 2015 a las 20:26
-
sí, cuéntame sobre ese gancho misterioso que debo haber estado perdiendo… no hay ninguno, es por eso que la única opción para hacer que esto funcionara era cambiar el núcleo después de todo… al menos en 2012
– Sebastián Schmid
07/04/2016 a las 13:55
-
Te conté sobre el gancho misterioso… en mi respuesta.
– Daniel C.
5 mayo 2016 a las 21:05
hasta donde puedo entender su preocupación, ¿puedo preguntar cuál es el problema de usar el tamaño original cuando está disponible?
– Obmerk Kronen
20 de noviembre de 2012 a las 13:00
Las imágenes cargadas son demasiado grandes, alrededor de 300kB, demasiado para la página en cuestión.
– Sebastián Schmid
20 de noviembre de 2012 a las 15:09
siempre puedes reducir la calidad (si es jpg):
add_filter('jpeg_quality', 'jpeg_quality_callback'); function jpeg_quality_callback($arg) { return (int)100; // or 80 or whatever }
– Obmerk Kronen
20 de noviembre de 2012 a las 16:37
tenga en cuenta este párrafo: > Pero esto no es lo que se desea, ya que esta costumbre, de buena fe, carga las imágenes en el tamaño correcto y también con la compresión .jpg más alta posible. Esto da como resultado imágenes de alrededor de 300kB en este caso.
– Sebastián Schmid
21 de noviembre de 2012 a las 16:23
Verifique la respuesta aceptada en wordpress.stackexchange.com/questions/21544/… para una buena respuesta a esta pregunta. Puedes lograr lo mismo con wp_get_attachment_image()
– fkoessler
11 de agosto de 2013 a las 2:17