django aws s3图像在上传时调整大小并访问各种调整大小的图像
django aws s3 image resize on upload and access to various resized image
我希望能够将我上传的图片调整为各种尺寸类别:
- 原创
- 中等 (500kb)
- 小 (200kb)
并将其保存到 AWS S3。以后就可以访问它了。
一种策略是将其保存在 filename_small.jpg、filename_medium.jpg 中,有一个辅助函数可以附加 _small、_medium 来访问这些文件。我不确定如何保存所有不同的文件(调整大小)然后使用助手访问它。
https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/storage_backends.py
class MediaStorage(S3Boto3Storage):
location = 'media'
file_overwrite = False
https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/models.py
class Employee(models.Model):
...
face_image = models.FileField(upload_to=upload_to('employee/face_image/'), blank=True, storage=MediaStorage())
https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/api.py
@api_view(['POST'])
def update_employee_image(request):
...
employee = Employee.objects.get(id = employee_id)
employee.face_image = face_image_obj
employee.save()
我正在使用 django-storages 和 S3Boto3Storage。我的完整工作项目在 git 链接中。
根据您的用例,我建议使用 sorl-thumbnail,它与 django-storages
配合使用,将为您处理调整大小,这意味着您不必进行管理工作不同尺寸自己。
您可以在要使用它们的地方定义缩略图大小,而不是定义特定的文件大小来存储图像,例如,
{% thumbnail item.image "300" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
这将生成 maximum width 300px 的缩略图,它会在第一次生成并保存在 s3 上。
如果您需要在模板上下文之外生成和获取缩略图,您可以使用该应用程序的低级别 API:
from sorl.thumbnail import get_thumbnail
im = get_thumbnail(my_file, '100x100', crop='center', quality=99)
我希望能够将我上传的图片调整为各种尺寸类别:
- 原创
- 中等 (500kb)
- 小 (200kb)
并将其保存到 AWS S3。以后就可以访问它了。 一种策略是将其保存在 filename_small.jpg、filename_medium.jpg 中,有一个辅助函数可以附加 _small、_medium 来访问这些文件。我不确定如何保存所有不同的文件(调整大小)然后使用助手访问它。
https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/storage_backends.py
class MediaStorage(S3Boto3Storage):
location = 'media'
file_overwrite = False
https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/models.py
class Employee(models.Model):
...
face_image = models.FileField(upload_to=upload_to('employee/face_image/'), blank=True, storage=MediaStorage())
https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/api.py
@api_view(['POST'])
def update_employee_image(request):
...
employee = Employee.objects.get(id = employee_id)
employee.face_image = face_image_obj
employee.save()
我正在使用 django-storages 和 S3Boto3Storage。我的完整工作项目在 git 链接中。
根据您的用例,我建议使用 sorl-thumbnail,它与 django-storages
配合使用,将为您处理调整大小,这意味着您不必进行管理工作不同尺寸自己。
您可以在要使用它们的地方定义缩略图大小,而不是定义特定的文件大小来存储图像,例如,
{% thumbnail item.image "300" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
这将生成 maximum width 300px 的缩略图,它会在第一次生成并保存在 s3 上。
如果您需要在模板上下文之外生成和获取缩略图,您可以使用该应用程序的低级别 API:
from sorl.thumbnail import get_thumbnail
im = get_thumbnail(my_file, '100x100', crop='center', quality=99)