Cambiar el tamaño de una imagen a un tamaño exacto, retener el aspecto y rellene cualquier espacio en PHP

StackOverflow https://stackoverflow.com/questions/3209206

Pregunta

hy,

Digamos que quiero convertir una imagen a un tamaño exacto, por ejemplo: 400x300.El truco es, si la imagen, debido a su relación de aspecto, no encaja en 400x300, luego colóquela allí con bordes negros.

A 900x1200 Imagen se convertiría a 225x300 para retener su relación de aspecto, y luego se les dieron bordes negros a la izquierda y la derecha para hacerlo 400x300.

Foto original:

|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  

Después de cambiar el tamaño, quiero mirar algo así:

_______________________
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|+++++++||||||||++++++|
|+++++++||||||||++++++|
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|_____________________|

The: "++++++++" Quiero ser un poco de color, y el "|||||||"¿Están la imagen, en el medio!

Lamentablemente no tengo ningún código todavía!

quiero algo como esto: http://phpthumb.sourceforge.net/DEMO/DEMO/phpthumb.demo.demo.php # x22 gracias

¿Fue útil?

Solución

Familiarícese con el Funciones de GeneracodiCodeGode , que le permiten manipular imágenes .

Deberá leer en su imagen usando una de las funciones de gd. Luego, deberá crear una segunda imagen usando, por ejemplo, imagecreatefrom... , que usted rellene con su color de elección. Luego copia la imagen original en la nueva imagen usando imagecreatetruecolor , que te permite Para cambiar el tamaño en el proceso. Tendrá que calcular el nuevo tamaño con algunas matemáticas simples de antemano, lo que funciona como imagecopyresampled / a> puede ayudarlo.

Alternativamente, juegue con la imagemagick clase, que es una alternativa a getimagesize, puede o no puede encontrar más fácil trabajar.

¿La mejor de las suertes! :)

Otros consejos

Crear un DIV de estilo para tener un fondo negro y dimensionado a 400x300.Luego muestre su imagen de redacción dentro de ese div.Incluso puede incluir un cheque para asegurarse de que la imagen no sea el aspecto deseado antes de mostrar el DIV.

algo como esto:

<? 
$height-ratio = $height / 300;
$width-ratio = $width / 400;

if ($height-ratio == $width-ratio) {
 $ratio = $height-ratio;
} elseif ($height-ratio > $width-ratio) {
 $ratio = $height-ratio;
 echo "<div class='blackbox'>";
} else {
 $ratio = $width-ratio;
 echo "<div class='blackbox'>";
}

$newHeight = $height / $ratio;
$newWidth = $width / $ratio;
echo "<img src='".$imgSrc."' height='".$newHeight."' width='".$newWidth."' />";

if ($height-ratio != $width-ratio)
 echo "</div>";
?>

con CSS de soporte de:

.blackbox { 
 text-align: center;
 background-color: black;
 height: 300px;
 width: 400px;
}

Soy un gran fan de la edición y el tamaño del tamaño de las imágenes con anticipación para ser el tamaño que quiero en lugar de establecer el ancho y la altura cuando se representa.El rendimiento es mejor y no tiene que preocuparse por la forma en que los diferentes navegadores pueden manejarlo de manera diferente.

Entonces, si no tiene un programa de edición de imágenes, obtenga PAINT.NET.Gratis y funciona bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top