繁体   English   中英

如何在调整图像大小并将其保存到另一个文件夹时保留图像的文件名?

[英]How do I keep the file name of an image when resizing it and saving it to another folder?

我在介绍神经网络 class 所以请注意我的无知。 也是我的第一个 SO 帖子。

我正在尝试将数据集中一些非常高分辨率的图像调整为新数据集中的 80x80p 灰度图像。 但是,当我这样做时,我想保持每个新图像的文件名与原始图像相同。 我知道如何将图像重新保存到新文件中的唯一方法是通过 str(count) ,这不是我想要的。 文件名对于稍后为我的数据集创建 .csv 文件很重要。

我能找到的唯一相关的SO帖子是:

使用原始文件名保存图像

但是建议的代码不起作用-不确定我是否以错误的方式进行操作。

import os
from PIL import Image
import imghdr
count=0
path1 = "/Users/..."
path2 = "/Users/..."
listing = os.listdir(path1)  
for file in listing:
    type = imghdr.what((path1 + file))
    if type == "jpeg":   
        img = Image.open("/Users/..." +file).convert('LA')
        img_resized = img.resize((80,80))
        img_resized.save(path2 + str(count) + '.png')
        count +=1
    pass
pass

重用从 for 循环中获得的原始文件名,即file ,并使用os.path.splitext()将其拆分为文件名和扩展名,如下所示:

import os
from PIL import Image
import imghdr
count=0
path1 = "/Users/..."
path2 = "/Users/..."
listing = os.listdir(path1)  
for file in listing:
    type = imghdr.what((path1 + file))
    if type == "jpeg":   
        img = Image.open("/Users/..." +file).convert('LA')
        img_resized = img.resize((80,80))

        # splitting the original filename to remove extension
        img_filename = os.path.splitext(file)[0]
        img_resized.save(path2 + img_filename + '.png')
        count +=1
    pass

另一种选择,我们可以使用 python str的内置split方法将原始文件名拆分为. 并丢弃扩展名。

import os
from PIL import Image
import imghdr
count=0
path1 = "/Users/..."
path2 = "/Users/..."
listing = os.listdir(path1)  
for file in listing:
    type = imghdr.what((path1 + file))
    if type == "jpeg":   
        img = Image.open("/Users/..." +file).convert('LA')
        img_resized = img.resize((80,80))

        # splitting the original filename to remove extension
        img_filename = file.split(".")[0]
        img_resized.save(path2 + img_filename + '.png')
        count +=1
    pass

因此,如果图像具有诸如some_image.jpeg之类的名称,那么img_filename将具有我们分割的值some_image 并丢弃了.jpeg的一部分。

注意:此选项假定 original_filename 不包含任何. 除了扩展名。

我假设图像名称在 path1 上。 如果是这样,您可以通过以下方式从那里获取图像名称:

x=path1.rsplit('/',1)[1]

我们在最后一个斜杠上拆分 path1 并通过索引获取图像名称字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM