python - 有没有办法使用 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 文档。
解决方案
我是否遗漏了什么——为什么不给你的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.jpg
is homer_simpson
.
推荐阅读
- databricks - Databricks:具有高随机写入和执行时间很长的作业
- python - 如何使用 PyWinAuto 枚举 Windows 10 中的所有顶级窗口
- javascript - 如何使用反应测试库在反应组件上测试条件渲染?
- printing - Bartender Webservice 提供 BTXML 脚本和 ACCESS_VIOLATION 错误
- r - 在堆积的 bar_plot 上画一条线
- javascript - Google Maps API 完全没有使用 HTML5 显示
- amazon-web-services - 基于当前使用情况的 EC2 到 Lambda 转发
- r - 如何让一列rhandsontable四舍五入并只显示整数?
- ftp - 使用 file.sh 将 csv 文件从 sftp 服务器传输到 ftp 服务器
- python - 无法从网站获取 API 密钥的值