Saltar al contenido

Cómo cambiar el tamaño de una imagen ImageField antes de guardarla en el modelo Python Django

Estate atento porque en esta reseña vas a hallar la respuesta que buscas.

Solución:

Podrías usar la biblioteca de django redimensionada. Cambia el tamaño de las imágenes cuando se cargan y las almacena por usted.

Uso

from django_resized import ResizedImageField

class Posts(models.Model):
    title = models.CharField(max_length=200, blank=True)
    body = models.TextField(blank=True)
    created_at = models.DateTimeField(default=datetime.datetime.now)
    post_image = ResizedImageField(size=[500, 300], upload_to=get_image_path, blank=True, null=True)

    def __str__(self):
        return self.title

Opciones

  • Talla – ancho y alto máximo, por ejemplo [640, 480]
  • cultivo – cambiar el tamaño y recortar. [‘top’, ‘left’] – Esquina superior izquierda, [‘middle’, –
    ‘center’] es el centro de recorte, [‘bottom’, ‘right’] – recortar la esquina inferior derecha.
  • calidad – calidad de la imagen redimensionada 1..100
  • keep_meta – mantener EXIF ​​y otros metadatos, por defecto True
  • force_format – forzar el formato de la imagen redimensionada, los formatos disponibles son los que admite la almohada, el valor predeterminado es Ninguno

**

Esto funcionará
** Primero que nada instale “PIL Fork” usando ‘pip install pillow

from PIL import Image


def __str__(self):
    return self.title


def save(self, *args, **kwargs):
    super(Posts, self).save(*args, **kwargs)
    imag = Image.open(self.post_image.path)
    if imag.width > 400 or imag.height> 300:
        output_size = (400, 300)
        imag.thumbnail(output_size)
        imag.save(self.post_image.path)
class Meta:
    verbose_name_plural = "Posts"

Reseñas y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *