Ant*_*rth 5 python django screenshot django-models imagefield
我有一个网络抓取工具,我想下载要抓取的页面的图像并将其保存为Django模型中的“截屏” ImageField。我正在使用此代码:
def save_screenshot(source,screenshot):
box = (0, 0, 1200, 600)
im = Image.open(io.BytesIO(screenshot))
region = im.crop(box)
tempfile_io = io.BytesIO()
region.save(tempfile_io, 'JPEG', optimize=True, quality=70)
source.screenshot.save(source.slug_name+"-screenshot",ContentFile(tempfile_io.getvalue()),save=True)
Run Code Online (Sandbox Code Playgroud)
它将屏幕截图保存到/ media / news_source_screenshots /目录,但不将其保存到模型。模型字段定义为:
screenshot = models.ImageField(upload_to='news_source_screenshots',blank=True,null=True)
Run Code Online (Sandbox Code Playgroud)
我想念什么?
所以事实证明上面的代码效果很好!问题是我使用如下代码调用上述方法:
source = NewsSource.objects.get(name=name)
html,screenshot = get_url(source.url)
save_screenshot(source,screenshot)
source.save()
Run Code Online (Sandbox Code Playgroud)
因此 save_sceenshot 方法起作用了,但它所做的工作被我的 source.save() 调用覆盖了。去搞清楚!