Tengo un modelo para la URL de la imagen en Django. Quiero calcular image_height y iamge_width de la imagen que se almacena en el depósito s3. A continuación se muestra mi modelo.py
from django.db import models from .project_model import Project class Image(models.Model): image = models.TextField(blank=False) image_width = models.IntegerField(default=0) image_height = models.IntegerField(default=0) project_id = models.ForeignKey(Project, on_delete=models.CASCADE) is_thumpnail = models.BooleanField(blank=False) upload_on = models.DateTimeField("created on", auto_now_add=True) updated_on = models.DateTimeField("updated on", auto_now=True) def __str__(self): return self.file_nameDespués de obtener el valor de alto y ancho, quiero almacenar el valor en el modelo.py.
Estoy buscando el siguiente tipo de ejemplo de respuesta
{ "id": "cJ9cm", "title": null, "description": null, "datetime": 1357856330, "type": "image/jpeg", "animated": false, "width": 2592, "height": 1944, "size": 544702, "views": 31829, "bandwidth": 17337319958, "link": "https://i.imgur.com/cJ9cm.jpg" }Si no tiene la imagen, no estoy seguro de cómo puede hacerlo si tuviera la imagen, es así en Pillow:
from PIL import Image im = Image.open('some_image.png') width, height = im.sizeAdemás, me preguntaba cómo creas estas instancias de modelos. Si está utilizando una función lambda activada por s3, puede crear estas instancias con información de imagen con bastante facilidad, en esa función lambda puede llamar a su backend y pasar los campos necesarios.
Puede usar boto3 para obtener esa imagen de s3 por cierto, esa debería ser una forma más fácil. Además, tal vez usar un campo de imagen podría ser mejor para su caso: documentos
necesita configurar sus almacenamientos como se explica aquí
Una vez que haya instalado estas dependencias, ahora puede obtener esa imagen de s3, boto3 tiene todas las funciones que necesita. Crear un cliente para operar en s3
import boto3 s3_client = boto3.client( 's3', aws_access_key_id="", aws_secret_access_key="", region_name="", )