我一直在阅读和尝试Django的各种缩略图应用程序.这些是要求:
所有生成的缩略图必须保存在与原始图像分开的S3存储桶中,即单独的存储类
删除图像实例时,还必须删除原始图像文件以及所有生成的缩略图
最大限度地减少昂贵的低效率,例如 获取缩略图的URL以在DRF中序列化不应该在S3存储桶中查看它是否每次都存在,等等.
VersatileImageField未能满足第一个要求.ImageKit未能满足第二个要求.第三个要求是我最困惑的地方; 我试图告诉自己最佳实践,但信息是分散的,我没有信心根据我迄今学到的知识做出决定.
根据我的阅读,我的印象是最有效的行为如下:
我最感兴趣的学习那么简单,缩略图和SORL-缩略图取(如果它们与过程对准我非常简要地高于或如果他们有一些更有效的概述)在方法上的差异,人和的优势/劣势在他们的每个方法中.
我需要为管理员提供上传ImageField使用AJAX 的图像的功能,然后裁剪他选择的部分(使用预定义的尺寸比率或分辨率),然后将裁剪的图像保存在数据库中.
我想django-image-cropping和django-ajaximage这个.
#Using django-image-cropping
from image_cropping import ImageRatioField
class Alumnus(models.Model):
photo = models.ImageField(null=True, blank=True)
cropped_photo = ImageRatioField('photo', '430x360')
Run Code Online (Sandbox Code Playgroud)
#Using django-ajaximage
from ajaximage.fields import AjaxImageField
class Alumnus(models.Model):
photo = AjaxImageField(
upload_to='alumni_photos',
max_height=400,
max_width=400,
crop=True
)
Run Code Online (Sandbox Code Playgroud)
虽然django-ajaximage使用AJAX上传图像,但它不允许管理员选择他想要裁剪django-image-cropping的图像部分,分两步裁剪图像:首先我们需要上传图像,将其保存到数据库,然后我们再次需要打开对象并选择裁剪部分,然后将其再次保存到数据库中,我觉得这是不必要的麻烦.有什么建议?
我正在使用简易缩略图为我的网站制作缩略图.我想从1500x1023px的图像创建缩略图.所需缩略图的大小为100x100px.我想要的是缩略图显示整个徽标而不是裁剪或拉伸.我已经看到这被称为衬垫合身 - 与作物相反.例如,对于此图像,我们在顶部添加236px的空白,在底部添加237px的空白,然后调整大小.有没有办法用简单的缩略图来做到这一点?如果没有,有关如何处理此问题的任何建议?谢谢!
我在我的Django 1.5项目中使用简单缩略图来生成缩略图.
我一直在使用几种不同尺寸的缩略图进行测试,但现在我想清除文件系统和easy-thumbnails数据库条目中的所有缩略图.随着时间的推移,我创建了许多不同大小的图像,我想现在删除它们.
我的目的是从一个干净的平板开始,并删除所有缩略图.我无法找到如何做到这一点.
当使用 Easy Thumbnails 时,我知道您可以通过将其添加到您的 settings.py 来全局配置所有图像(甚至带有 alpha 的 PNG)以转换为 JPG
THUMBNAIL_TRANSPARENCY_EXTENSION = 'jpg'
Run Code Online (Sandbox Code Playgroud)
但问题是我不想强制所有模型中的所有图像都转换为 JPG,因为我有一些模型需要带有 alpha (png) 的图像。
我想要的是强制单个模型中的单个字段将所有图像转换为 JPG,无论它们是否是启用了 Alpha 的 PNG。
class Article(BaseModel):
title = models.CharField(max_length=255, unique=True)
image = ThumbnailerImageField(upload_to='blog/articles/image')
Run Code Online (Sandbox Code Playgroud)
我想要这个,因为很多人上传启用了 Alpha 的 PNG,这会阻止缩略图将它们压缩为 JPG,从而使许多缩略图保留为 PNG (500kb),而不是转换为 JPG (70kb)。
如何指定始终将这些文章图像转换为 JPG?
我有一个使用easy_thumbnails(| thumbnail_url)显示的ImageField模型.
我的问题是如果ImageField为空,我如何显示默认图像?
我想在模型/视图中使用此逻辑,而不是在html /模板中.
例如:
DEFAULT_PICTURE = 'default.jpg'
def get_picture(self):
if self.picture:
return self.picture
else:
from DEFAULT_PICTURE
Run Code Online (Sandbox Code Playgroud)
get_picture()返回哪个对象与easy_thumbnails兼容?
我尝试创建一个新的File对象,就像这里一样,但它没有用.
您能否提供一个返回现有文件以使用easy_thumbnails显示的工作示例?
我正在项目中使用django easy_thumbnail,我一步一步地按照说明操作.但事实证明,网址不会被退回.
包含imageField的模型是:
class Project(models.Model):
name = models.CharField(max_length=100)
description = models.CharField(max_length=2000)
startDate = models.DateField(auto_now_add=True)
photo = models.ImageField(upload_to="projectimg/", null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
在设置中,我指定:
THUMBNAIL_ALIASES = {
'': {
'avatar': {'size': (50, 50), 'crop': True},
},
}
Run Code Online (Sandbox Code Playgroud)
我使用模板过滤器:
<div class="image">
<img src="{{ MEDIA_URL }}{{ project.photo|thumbnail_url:'avatar'}}" class="img-responsive" alt="{{ project.name }}">
</div>
Run Code Online (Sandbox Code Playgroud)
但是,过滤器似乎没有返回任何东西.是因为找不到网址吗?还是其他原因?谢谢你的时间!
使用普通的ImageField,可以简单地序列化URL image = serializers.ImageField().使用简易缩略图时应该是什么样子?
到目前为止,我只找到了一个获取URL的函数:Django easy_thumbnails访问图像URL 在序列化程序中使用它需要一个SerializerMethodField,这是一个令人不满意的解决方案.我正在寻找一种尽可能高效/高效的解决方案,并且在一条线上.
我正在使用 S3Boto3Storage 在我的 aws s3 中保存文档并尝试使用简单的缩略图来生成缩略图,请在下面找到代码
模型类
class ThumbnailTestModel(models.Model):
sample1 = models.FileField(
storage=S3Boto3Storage(),
help_text="Field to store the sample document of Professional",
null=True,
blank=True,
upload_to=s3_professional_sample_storage_path)
sample1_file_name = models.CharField(blank=True,null=True,max_length=1000, default=True)
Run Code Online (Sandbox Code Playgroud)
查看班级
class ThumbnailTestModelView(mixins.CreateModelMixin, mixins.ListModelMixin,
mixins.UpdateModelMixin, viewsets.GenericViewSet):
queryset = ThumbnailTestModel.objects.all()
permission_classes = (AllowAny, )
serializer_class = ThumbnailSerializer
Run Code Online (Sandbox Code Playgroud)
和序列化
class ThumbnailSerializer(serializers.ModelSerializer):
sample1 = serializers.FileField(read_only=True, required=False, allow_null=True)
sample1_base64 = serializers.CharField(write_only=True, required=False, allow_null=True)
sample1_thumbnail = serializers.SerializerMethodField(required=False, read_only=True, allow_null=True)
class Meta:
model = ThumbnailTestModel
fields = ['id','sample1', 'sample1_file_name', 'sample1_base64', 'sample1_thumbnail']
def validate(self, validated_data):
validated_data = super(ProductProfessionalSerializer,
self).validate(validated_data) …Run Code Online (Sandbox Code Playgroud)