Python Django图像大小调整脚本

Python Django图像大小调整脚本,python,django,Python,Django,嗨,我有一个项目,图像上传并保存在媒体的子文件夹中,从来没有设置图像大小,所以现在图像保存4mb,最终总大小达到40GB 我知道如何写一个脚本,如果图像是在一个单一的文件夹,但有人可以指导我这样做,以检查所有的图像在一个文件夹中,并调整它的大小?即使它在一个子文件夹和另一个子文件夹中 使用Django和python 图像上传功能 上传模型 您可以使用该函数浏览所有文件和子文件夹 for (path, dirs, files) in os.walk(path): for file in f

嗨,我有一个项目,图像上传并保存在媒体的子文件夹中,从来没有设置图像大小,所以现在图像保存4mb,最终总大小达到40GB

我知道如何写一个脚本,如果图像是在一个单一的文件夹,但有人可以指导我这样做,以检查所有的图像在一个文件夹中,并调整它的大小?即使它在一个子文件夹和另一个子文件夹中

使用Django和python

图像上传功能

上传模型

您可以使用该函数浏览所有文件和子文件夹

for (path, dirs, files) in os.walk(path):
    for file in files:
        filename = os.path.join(path, file)
        if filename.endswith('.jpg'):
            resize_image(filename)
您可以使用该函数浏览所有文件和子文件夹

for (path, dirs, files) in os.walk(path):
    for file in files:
        filename = os.path.join(path, file)
        if filename.endswith('.jpg'):
            resize_image(filename)

在这里,我用缩小的图像覆盖现有图像。
artwork.前台
是一个
文件指针
,我们将fp传递给
PIL
类。
Image
类的
save()
方法将filename/path conating filename作为第一个参数。此时,
.path
属性变得很方便

from PIL import Image


def do_resize(image):
    pil_img = Image.open(image)
    resize_limit = 100, 150
    pil_img.thumbnail(resize_limit, Image.ANTIALIAS)
    pil_img.save(image.path)


for artwork in ArtworkForeground.objects.filter(foreground__isnull=False):
    do_resize(artwork.foreground)
从PIL导入图像
def do_调整大小(图像):
pil_img=Image.open(图像)
调整大小_限制=100150
pil\u img.缩略图(调整大小限制,图像.反别名)
pil_img.save(image.path)
对于ArtworkForeground.objects.filter中的艺术品(foreground\uu isnull=False):
不调整大小(插图前景)
更新-1
我应该把这个片段放在哪里?

如果从现在起设置某种限制验证,只需在Django Shell中运行此脚本即可(此脚本仅限一次性使用)


在这里,我用缩小的图像覆盖现有图像。
artwork.前台
是一个
文件指针
,我们将fp传递给
PIL
类。
Image
类的
save()
方法将filename/path conating filename作为第一个参数。此时,
.path
属性变得很方便

from PIL import Image


def do_resize(image):
    pil_img = Image.open(image)
    resize_limit = 100, 150
    pil_img.thumbnail(resize_limit, Image.ANTIALIAS)
    pil_img.save(image.path)


for artwork in ArtworkForeground.objects.filter(foreground__isnull=False):
    do_resize(artwork.foreground)
从PIL导入图像
def do_调整大小(图像):
pil_img=Image.open(图像)
调整大小_限制=100150
pil\u img.缩略图(调整大小限制,图像.反别名)
pil_img.save(image.path)
对于ArtworkForeground.objects.filter中的艺术品(foreground\uu isnull=False):
不调整大小(插图前景)
更新-1
我应该把这个片段放在哪里?

如果从现在起设置某种限制验证,只需在Django Shell中运行此脚本即可(此脚本仅限一次性使用)



如果你能在节省时间的同时调整图像的大小,那会更好,我知道,这样可以解决别人的问题。正在尝试将当前图像的大小调整得更小。是否可以添加相应的模型?这样所有图像都是
ArtworkForeground
模型?你想如何调整它们的大小(以固定的分辨率?)是的,如果你在保存图像的同时调整图像的大小会更好,我知道,修复其他人的混乱。正在尝试将当前图像的大小调整得更小。是否可以添加相应的模型?这样所有图像都是
ArtworkForeground
模型?您希望如何调整它们(使用固定的分辨率?)是的,ArtworkForeground。让我试试这个,看起来很有希望:)让我试试这个,看起来很有希望:)如果您从现在开始设置某种限制或验证,只需在Django Shell中运行此脚本(此脚本仅供一次性使用)只是得到了这个错误,但是它被导入了:NameError:name'Image'没有定义屏幕截图请在下面的屏幕截图中你可以看到我的代码,我正在运行的脚本和错误,还有在我放置文件的左侧:@Darren打开shell,并逐行粘贴代码,如果从现在起设置了某种限制或验证,只需在Django Shell中运行此脚本(此脚本仅用于一次性使用)即可获得此错误,但已导入:NameError:name“Image”未定义屏幕截图请在下面的屏幕截图中查看我的代码,我正在运行的脚本和错误,也在我放置文件的左侧:@Darren打开shell,用适当的缩进逐行粘贴代码