首页 > 解决方案 > 有没有办法使用 python 重命名 restAPI 本地服务器中的图像?

问题描述

我创建了一个 localhost api 来分析图像并比较它们(计算机视觉)项目!

我的计划是将图像从我的数据文件夹上传到服务器,文件夹中的每个图像文件都被命名(fake_name.jpg/jpeg)我正在尝试将文件名添加为参数中的人名,但只能手动执行每个文件。我也想弄清楚如何上传多个文件。


    def image_to_base64(self, img):
        # convert image to base64
        prependInfo = 'data:image/jpeg;base64,'
        encodedString = base64.b64encode(img).decode("utf-8")
        fullString = str(prependInfo) + encodedString
        return str(fullString)

    # the following part is to create entry in database:

    def create_person_entry(self,img):
        base_url = "localhost:8080/service/api/person/create?"

        parameters = {
            "person-name": 'homer simson' #manual change name from here before each upload
        }
        data = {
            "image-data": self.image_to_base64(img)
        }
        r = requests.post(base_url+urllib.parse.urlencode(parameters),headers{'Authorization':self.auth_tok}, data=data).json()
        return r



#to import 1 image i used:
#with open("///data/homer simson.jpg", "rb") as img:
    person_name = cvis.create_person(img.read())
    print (person_name)

它上传成功,但我必须从参数“人名”中为我上传的每个人手动命名人员条目!到处研究以自动化解决方案!

编辑1:

我设法让这个代码工作并且它工作

# to upload multiple images 
#folder with JPEG/JPG files to upload 
folder = "/home///data/" 
#dict for files 
upload_list = [] 
for files in os.listdir(folder): with open("{folder}{name}".format(folder=folder, name=files), "rb") as data:
upload_list.append(files) 
person_name = cvis.create_person(data.read()) 
print (person_name) 

我设法将所有图像从目录上传到它工作的服务器,但现在我所有的文件都被命名为 homer simpson :)

我终于在AKX提出的建议下做到了这一点,他的解决方案低于plz upvote,谢谢

现在我需要弄清楚如何删除以前的无名条目。将检查 API 文档。

标签: pythonpython-3.xrestpython-requests

解决方案


我是否遗漏了什么——为什么不给你的create_person_entry()函数添加另一个参数呢?


    def create_person_entry(self, name, img):
        parameters = {
            "person-name": name,
        }
        # ...
        return r

# ...

cvis.create_person_entry("homer_simpson", img.read())

如果你有一堆图片,

import os
import glob

for filename in glob.glob("people/*.jpg"):
    file_basename = os.path.splitext(os.path.basename(filename))[0]
    with open(filename, "rb") as img:
        cvis.create_person_entry(file_basename, img.read())

将使用无扩展名的文件名,例如people/homer_simpson.jpgis homer_simpson.


推荐阅读