<p>我认为应该有一种方法来调整上传图片的大小。但老实说,我在文档中也没有通过调试找到</p>
<p>但是,我可以建议您在保存post model后对内容中的所有图像进行后期处理</p>
<p><strong>型号.py</strong></p>
<pre><code>from django.conf import settings
from PIL import Image
def resize_image(filename):
"""
here goes resize logic.
For example, I've put 50% of current size if width>=900.
Might be something more sophisticated
"""
im = Image.open(filename)
width, height = im.size
if width >= 500:
im = im.resize((int(width * 0.5), int(height * 0.5)))
im.save(filename)
class Post(models.Model):
...
body = RichTextUploadingField(blank=True, null=True)
...
def save(self, *args, **kwargs):
for token in self.body.split():
# find all <img src="/media/.../img.jpg">
if token.startswith('src='):
filepath = token.split('=')[1].strip('"') # get path of src
filepath = filepath.replace('/media', settings.MEDIA_ROOT) # resolve path to MEDIA_ROOT
resize_image(filepath) #do resize in-place
super().save(*args, **kwargs)
</code></pre>
<p>这个解决方案不是很好,因为它只在上传图片后调整图片大小</p>
<p>库本身可能应该有某种退出点/回调,以便在上载时进行图像预处理</p>