Pregunta

El usuario de mi sitio web subir imágenes que se utilizan como avatares. He puesto un tamaño límite de subida de 2 MB. En la mayoría de los lugares a los que sólo requieren miniaturas. Sin embargo, los usuarios subir imágenes con resoluciones mucho más grandes. Almaceno estos archivos en mi sistema de archivos.

¿Cómo puedo crear miniaturas y almacenarlos en lugar de archivos de gran tamaño?

¿Fue útil?

Solución

En función de la configuración de instalación / servidor, tiene varias posibilidades.

Me gustaría decir que he visto bastante Nunca un servidor sin GD instalado - para Imagick, su menor probabilidad de ser instalado por defecto: - (


Otra solución podría ser la de llamar a la rel="nofollow convertir utilidad de línea de comandos (viene con ImageMagick - forma independiente de cualquier extensión PHP) , usando algo como exec llamarlo.

Advantage, con eso, sería que no estaría limitado por memory_limit, como el cambio de tamaño se lleva a cabo mediante una herramienta externa - pero, por supuesto, esto también significa que la aplicación va a depender de una herramienta externa, lo cual no es siempre agradable ...


Si es necesario, hay un montón de tutoriales sobre GD; por ejemplo, los que podrían interesarle:

Otros consejos

Puede utilizar el GD módulo o la módulo de ImageMagick para cambiar el tamaño y reducir el tamaño de cualquier imágenes cargadas.

Si google en torno a algo así como "PHP imagen para cambiar el tamaño", encontrará un montón de ejemplos. Yo tiendo a usar GD, ya que tengo un viejo trozo de código dando vueltas que funciona muy bien. Asumiendo que tiene una imagen jpeg Subida conocido encontrado en $srcImgPath, usted podría hacer algo como lo siguiente, donde $newWidth y $newHeight son los nuevos tamaños de imagen que desee:

list($width, $height, $type) = getimagesize($srcImgPath);
$srcImg = imagecreatefromjpeg($srcImgPath);
if ($srcImg === false) return false;
$workImg = imagecreatetruecolor($newWidth,$newHeight);
imagecopyresampled($workImg,$srcImg,0,0,0,0,$newWidth,$newHeight,$width,$height);
imagejpeg($workImg,$newFilename,$quality);

funcionalizar según sea apropiado, y asegúrese de especificar el $quality. Puede abstracta a cabo este código para manejar archivos GIF y PNG muy fácilmente también.

Salida de la biblioteca gd, en concreto el imagecopyresized función

Sólo una nota rápida, si vas por el camino de GD, el uso imagecopyresampled, ya que produce imágenes más limpio que buscan. Con esto quiero decir que no se verá tan granulada y / o pixely.

Enlace al manual de PHP en la función: http: // US2. php.net/manual/en/function.imagecopyresampled.php

Yo recomendaría el guión timthumb.php. es sólida como una roca. http://www.darrenhoyt.com/2008/04 / 02 / TimThumb-php-script-lanzado /

Si ha instalado Imagick en su configuración PHP. A continuación, hay una función que hace esto. Imagick :: thumbnailImage ()

Si usted no tiene Imagick, a continuación, la librería GD será muy útil. Debido a que tienen imagcopyresized ()

No es Google App Engine equipado con un subconjunto de PIL? No es la función de 'redimensionamiento' que podría ser el uso ... y lo mejor de todo, que está recibiendo una cuota gratis!

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