简介:我需要在个人资料图片中减少django图片的大小,以使宽度为300px,高度自动确定为与原始图片成比例。我该如何使用下面的代码
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_image = models.ImageField(upload_to='profile_images/', default='', blank=True, null=True)
def save(self, force_insert=False, force_update=False, using=None,
update_fields=None):
# Opening the uploaded image
im = Image.open(self.profile_image)
output = BytesIO()
# Resize/modify the image
im = im.resize((300, 250))
#Here the width is 300 and height is 250. I want width to be 300 and height to be proportionately added. How do I modify the above code
# after modifications, save it to the output
im.save(output, format='JPEG', quality=100)
output.seek(0)
# change the imagefield value to be the newley modifed image value
self.profile_image = InMemoryUploadedFile(output, 'ImageField', "%s.jpg" % self.profile_image.name.split('.')[0], 'image/jpeg',
sys.getsizeof(output), None)
super(Profile, self).save()
答案 0 :(得分:1)
您可以这样做(根据this答案):
im = Image.open(self.profile_image)
output = BytesIO()
basewidth = 300
wpercent = (basewidth/float(im.size[0]))
hsize = int((float(img.size[1])*float(wpercent)))
im = im.resize((basewidth, hsize))