Buscar la función de procesamiento de escalado de imágenes de PHP
Función resizeImage($im, $maxwidth, $maxheight, $name, $filetype)
{
$ pic _ width = imágenesx($ im) ;
$ pic _ height = imagesy($ im);
if(($ maxwidth & amp;& amp$ pic _ width & gt$ maxwidth)($ max height & amp;& amp$ pic _ height & gt$maxheight))
{
if($ maxwidth & amp;& amp$ pic _ width & gt$maxwidth)
{
$ relación de ancho = $ maxwidth/$ pic _ width;
$ resizewidth _ tag = true
}
if($altura máxima & amp;& amp$ pic _ altura & gt$maxheight)
{
$ relación de altura = $ altura máxima/$ pic _ altura;
$ resizeheight _ tag = true
}
if($ resize width _ tag & amp;& amp$resizeheight_tag)
{
if($ relación de ancho & lt; $altura)
$ relación = $ relación de ancho
Otro
$ relación = $ relación de altura
}
if($ cambiar tamaño ancho _ etiqueta & & amp! $resizeheight_tag)
$ ratio = $ anchoratio
if( $ cambiar el tamaño de altura _ etiqueta & & amp! $resizewidth_tag)
$ relación = $ altura relación
$ nuevo ancho = $ foto _ ancho * $ relación
$ nueva altura = $ pic _ altura * $ ratio
if(function _ existe(" imagecopyresampled "))
{
$ newim = imagecreatetruecolor( $ nuevo ancho, $ nueva altura);
imagecopyresampled($newim, $im, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);
}
Otro
{
$newim = imagecreate($newwidth, $new height);
imagecopyrestized($newim , $im, 0, 0, 0, $nuevo ancho, $nueva altura, $pic_width, $pic_height);
}
$nombre = $nombre. $ tipo de archivo
imagejpeg($newim,$name);
destruir imagen($newim);
}
Otro p> p>
{
$nombre = $nombre.
$ tipo de archivo
imagejpeg($im, $nombre);
}
}
Descripción del parámetro:
$im objeto de imagen, antes de aplicar esta función, debe usar imagecreatefromjpeg() para leer el objeto de imagen. Si el entorno PHP admite PNG y GIF, también puede utilizar imagecreatefromgif() e ImageCreateFrompng();
$maxwidth define el ancho máximo (en píxeles) de la imagen generada.
$maxheight es la altura máxima de la imagen generada (unidad: píxel)
$name es el nombre de la imagen generada
$filetype(.jpg /.png/. gif)
Comentarios de código:
Línea 3~4: lea el ancho y alto real de la imagen a escalar.
Línea 8-26: Al calcular la relación de compresión entre el ancho y el alto de la imagen real y el ancho y el alto de la imagen que se generará, finalmente se determina si se debe escalar la imagen de acuerdo con el ancho. o altura. La solución actual es escalar la imagen según el ancho. Si desea escalar la imagen según la altura, puede cambiar la declaración en la línea 22 a $ widthratio & gt$heightratio
Líneas 28~31: si la longitud o el ancho de la imagen real es menor que la longitud o el ancho especificados de la imagen generada, la imagen se escalará según la longitud o el ancho.
Líneas 33-34: Calcula el largo y el ancho de la imagen escalada final.
Líneas 36~45: Hay dos formas de cambiar el tamaño de la imagen según el largo y ancho calculados de la imagen final generada: la función ImageCopyResized() es válida en todas las versiones de GD, pero cambia el tamaño de la imagen. El algoritmo de escalado es relativamente tosco. ImageCopyResamples(), cuyo algoritmo de interpolación de píxeles produce bordes de imagen más suaves, pero esta función es más lenta que ImageCopyResized().
Líneas 47~49: La imagen procesada finalmente se genera. Si necesita generar GIF o PNG, debe cambiar la función imagejpeg() a imagegif() o imagepng().
Líneas 51~56: si la longitud y el ancho reales de la imagen son menores que la longitud y el ancho especificados de la imagen generada, la imagen permanecerá como está. De manera similar, si necesita generar GIF o PNG, debe cambiar la función imagejpeg() a imagegif() o imagepng().
Nota especial:
La biblioteca GD admite el formato GIF antes de la versión 1.6.2, pero no admite el formato GIF después de la versión 1.6.2 porque el uso del algoritmo LZW en formato GIF implica patentar. Si es un entorno WINDOWS, simplemente ingrese PHP. Busque extensión=php_gd2.dll en el archivo INI, elimine # y reinicie APACHE. Si se trata de un entorno Linux, si desea admitir GIF, PNG y JPEG, debe descargar e instalar las fuentes libpng, zlib y freetype.
Bien, la función de compresión de imágenes de PHP está completa. Finalmente, resumamos toda la idea de procesamiento:
Calculando la relación de escala entre la longitud y el ancho de la imagen real y la especificada. largo y ancho de la imagen generada, calcule el tamaño de la imagen generada final de acuerdo con las necesidades reales (si la imagen se escala por ancho o alto), luego use las funciones de procesamiento de imágenes de PHP para procesar la imagen y finalmente generar la imagen.
Lo anterior es una descripción de la función sobre cómo comprimir imágenes sin distorsión en el procesamiento de imágenes PHP.