PHP cargando imágenes en las dimensiones correctas

Sé que esta pregunta es muy común, pero el punto principal en mi pregunta es que quiero saber cómo Facebook o algunos otros sitios web cargan sus imágenes en el tamaño correcto. por ejemplo. si subimos una imagen de la dimensión: ancho: 1000px, altura: 20px. luego, Facebook actualiza las actualizaciones de estado con esa foto, pero hace que el tamaño de la imagen sea pequeño en la proporción correcta. su jus escala en la imagen, pero podemos saber que la imagen es muy amplia (mi propia palabra para un ancho muy alto: P) donde las imágenes de altura también se publican en la proporción correcta.

PIC NUMERO 1

PIC NUMERO 2

He incluido los ejemplos de imagen de arriba. cómo Facebook calcula la proporción de tamaño n de las fotos y hace eco de la imagen manteniendo las dimensiones correctas pero reduciéndolas al mismo tiempo.

Este código es bastante detallado, pero podría darle una idea sobre cómo calcular las dimensiones de la imagen.

Los parámetros son el ancho de su fuente y el ancho máximo y las alturas de su objective

function image_resize_dimensions($source_width,$source_height,$thumb_width,$thumb_height) { $source_ratio = $source_width / $source_height; $thumb_ratio = $thumb_width / $thumb_height; // Ratio is Taller if ($thumb_ratio > $source_ratio) { $result_height = $thumb_height; $result_width = $thumb_height * $source_ratio; } // Ratio is Wider elseif ($thumb_ratio < $source_ratio) { $result_width = $thumb_width; $result_height = $thumb_width / $source_ratio; } // Ratio the Same elseif($thumb_ratio == $source_ratio) { $result_height = $thumb_height; $result_width = $thumb_width; } return array('x'=>$result_width,'y'=>$result_height); } 

Creo que hay algunos factores.

  1. el factor principal es el ancho del contenido en el que se muestra la imagen
  2. el ancho original de la imagen
  3. si quieres llenar todo el contenido con la imagen o no (Facebook no)

Digamos que tienes una imagen que tiene un ancho de 1000 px. Tu contenido es 400px. Desea llenar el contenido a la mitad con su imagen, por lo que tiene un ancho final de 200 píxeles para su imagen. La altura es solo cálculo ca percental (regla de tres).

Al final, tendrá la proporción correcta y se adapta bien a su contenido.

Por supuesto, también podría verificar si la imagen es 16: 9 o 4: 3 para determinar el ancho máximo para imágenes como su primer ejemplo.