La clase UploadedImage
Mediante objetos de tipo UploadedImage podemos representar y
trabajar con fichero de imagen que han subidos desde inputs de formulario.
Como UploadedImage hereda de UploadedFile,
que a su vez hereda de File,
podremos hacer con una imagen subida lo mismo que se puede hacer con otros ficheros.
Consultad también los ejemplos de
la clase File y
la clase UploadedFile
para ver las operaciones disponibles (comprobar tipos, mover, copiar, borrar...).
Por ahora, el único método implementado en esta clase es
scale() que recorta y escala una imagen al tamaño deseado, respetando
la relación de aspecto indicada.
Índice
Usando el constructor
El constructor se hereda de la clase padre.
Se puede crear un objeto UplaodedImage usando el constructor,
a partir de la clave del array $_FILES, el tamaño máximo
que queremos permitir (opcional) y una lista de tipos MIME aceptados (opcional).
Sin embargo, esta no va a ser la forma habitual de crear el objeto, puesto
que lo normal será hacerlo a partir de la Request, como se
muestra en el siguiente ejemplo.
Parámetros
- string
$key: clave de $_FILES (atributo name del input). - int
$maxSize: tamaño máximo en bytes (opcional, por defecto 0 que significa sin límite). - array
$mimes: listado de tipos MIME aceptados (opcional).
Ejemplo
Recuperando la imagen a partir de la Request
Lo más normal es recuperar la imagen a partir del objeto
Request. Para ello, usaremos el método Request::imageFile()
de la siguiente forma:
Ejemplo
Podéis consultar más detalles del método Request::imageFile() en
la documentación sobre la clase Request.
Escalando la imagen con scale()
Cuando un usuario nos sube una imagen, es probable que sea demasiado grande para mostrar en una página web y ocupe mucho espacio en disco. Una buena idea es escalarla a un tamaño adecuado.
Para esto, podemos usar el método scale(). Este método escala y recorta
basándose en la relación de aspecto indicada.
Parámetros
- int
$maxValue: tamaño máximo en píxeles del ancho o del alto, dependiendo de la relación de aspecto. - float
$aspectRatio: relacion de aspecto a respetar (opcional, por defecto 4/3). - bool
$respectAspect: true (por defecto) intercambia el ratio si detecta que la imagen no corresponde con el indicado, por ejemplo, si la imagen es más alta que ancha y el ratio es 4/3 lo invierte a 3/4.
Ejemplo
Se puede hacer todo en una sola línea: