|
|
@@ -0,0 +1,185 @@
|
|
|
+import time
|
|
|
+import settings
|
|
|
+from sys import platform as sys_platform
|
|
|
+from utils.utils_func import httpGetHandler
|
|
|
+from PIL import Image
|
|
|
+from io import BytesIO
|
|
|
+import requests
|
|
|
+
|
|
|
+if settings.IS_TEST:
|
|
|
+ import piexif
|
|
|
+ from PIL import Image
|
|
|
+ import threading
|
|
|
+
|
|
|
+
|
|
|
+class CaptureBasic():
|
|
|
+ # program_sign = Signal(dict)0
|
|
|
+ base_host = "http://localhost:5513"
|
|
|
+ _get_image_index = 0
|
|
|
+ _get_folder_index = 0
|
|
|
+ is_first_init = 0
|
|
|
+
|
|
|
+ def __init__(self):
|
|
|
+ # self.window = window
|
|
|
+ # 状态 1 进行中 2 已停止
|
|
|
+ self.state = 2
|
|
|
+ # 总拍照数量
|
|
|
+ self.total_num = 0
|
|
|
+ # 是否获取照片
|
|
|
+ self.is_get_photo = False
|
|
|
+ # self.keyboard = Controller()
|
|
|
+ self.hwnd = None
|
|
|
+ def getPreviewImage(self)->Image:
|
|
|
+ '''获取预览图'''
|
|
|
+ yzmdata = requests.get(self.base_host + "/preview.jpg")
|
|
|
+ tempIm = BytesIO(yzmdata.content)
|
|
|
+ im = Image.open(tempIm)
|
|
|
+ return im
|
|
|
+
|
|
|
+ def getCaptureFolderPath(self) -> Image:
|
|
|
+ """获取预览图"""
|
|
|
+ response = httpGetHandler(
|
|
|
+ url=self.base_host,
|
|
|
+ params={"slc": "get", "param1": "session.folder"},
|
|
|
+ headers={},
|
|
|
+ )
|
|
|
+ return response.text
|
|
|
+
|
|
|
+ def run_capture_action(self,command):
|
|
|
+ '''执行capture动作'''
|
|
|
+ response = httpGetHandler(url=self.base_host, params={"CMD":command},headers={})
|
|
|
+ return response
|
|
|
+ # def photograph(self):
|
|
|
+ # """
|
|
|
+ # Args:
|
|
|
+ # data:
|
|
|
+ # info_show: 信息输出
|
|
|
+ # image_deal_mode:0 表示左脚,1表示右脚
|
|
|
+ # Returns:
|
|
|
+ # """
|
|
|
+ # print("142----------------------------photograph")
|
|
|
+ # # 执行拍照
|
|
|
+ # if not self.hwnd:
|
|
|
+ # return False, {"flag": "{} 未打开".format(settings.CaptureSoftwareName)}
|
|
|
+ # if self.state == 1:
|
|
|
+ # print("当前有未完成的任务")
|
|
|
+ # return False, {"flag": "当前有未完成的任务"}
|
|
|
+ # print("开始拍照")
|
|
|
+ # self.state = 1
|
|
|
+ # if not self.set_foreground_window():
|
|
|
+ # return False, {"flag": "no {}".format(settings.CaptureSoftwareName)}
|
|
|
+ # time.sleep(0.1)
|
|
|
+ # # 自动对焦
|
|
|
+ # self.auto_focus()
|
|
|
+ # # self.send_win32_key(self.hwnd, key_1=win32con.VK_CONTROL, key_2=win32con.VK_F2)
|
|
|
+
|
|
|
+ # if settings.IS_TEST:
|
|
|
+ # # print("56-----测试拍照")
|
|
|
+ # threading.Thread(target=self.test_add_photo, args=()).start()
|
|
|
+ # # self.program_sign.emit({"type": "add_to_photo_todo_list",
|
|
|
+ # # "data": data})
|
|
|
+ # time.sleep(float(settings.PhotographSeconds))
|
|
|
+
|
|
|
+ # def test_add_photo(self):
|
|
|
+ # def copy_file(srcfile, dstpath, dstfile): # 复制函数
|
|
|
+ # if not os.path.isfile(srcfile):
|
|
|
+ # # print("%s not exist!" % (srcfile))
|
|
|
+ # return
|
|
|
+ # else:
|
|
|
+ # if int(os.path.getsize(srcfile) / 1024) < 10:
|
|
|
+ # return
|
|
|
+ # # fpath, fname = os.path.split(srcfile) # 分离文件名和路径
|
|
|
+ # if not os.path.exists(dstpath):
|
|
|
+ # os.makedirs(dstpath) # 创建路径
|
|
|
+ # shutil.copy(srcfile, dstfile) # 复制文件
|
|
|
+
|
|
|
+ # print("模拟拍照 test_add_photo")
|
|
|
+ # time.sleep(0.9)
|
|
|
+ # s = time.time()
|
|
|
+ # source_path = r"{}\PhotoImageDir\test_source".format(os.getcwd())
|
|
|
+ # check_path(source_path)
|
|
|
+
|
|
|
+ # # 整理所有测试源照片
|
|
|
+ # images_path_list = []
|
|
|
+ # folder_list = get_folder(source_path)
|
|
|
+ # for folder_dict in folder_list:
|
|
|
+ # folder_path = folder_dict["folder_path"]
|
|
|
+ # _pics = [x["file_path"] for x in get_images(folder_path)]
|
|
|
+ # if _pics:
|
|
|
+ # images_path_list.append(_pics)
|
|
|
+
|
|
|
+ # if len(images_path_list) <= CaptureBasic._get_folder_index:
|
|
|
+ # CaptureBasic._get_folder_index = 0
|
|
|
+ # CaptureBasic._get_image_index = 0
|
|
|
+ # srcfile = images_path_list[CaptureBasic._get_folder_index][CaptureBasic._get_image_index]
|
|
|
+
|
|
|
+ # # 新文件夹
|
|
|
+ # CaptureBasic._get_image_index += 1
|
|
|
+ # if len(images_path_list[CaptureBasic._get_folder_index]) <= CaptureBasic._get_image_index:
|
|
|
+ # CaptureBasic._get_folder_index += 1
|
|
|
+ # CaptureBasic._get_image_index = 0
|
|
|
+
|
|
|
+ # # print("pic:", srcfile)
|
|
|
+ # e = os.path.splitext(os.path.split(srcfile)[1])[1]
|
|
|
+
|
|
|
+ # # 修改图片时间
|
|
|
+ # if e != ".CR2":
|
|
|
+ # _time = time.strftime("%Y:%m:%d %H:%M:%S", time.localtime(time.time()))
|
|
|
+ # exif_ifd = {piexif.ExifIFD.DateTimeOriginal: _time}
|
|
|
+ # exif_dict = {"Exif": exif_ifd}
|
|
|
+ # exif_bytes = piexif.dump(exif_dict)
|
|
|
+ # im = Image.open(srcfile)
|
|
|
+ # im.save(srcfile, exif=exif_bytes)
|
|
|
+
|
|
|
+ # dst_path = settings.PhotoOutputDir
|
|
|
+ # # dst_path = "{}/data".format(os.getcwd())
|
|
|
+ # e = os.path.splitext(srcfile)[-1]
|
|
|
+ # new_name = "~{}{}".format(int(time.time() * 10), e)
|
|
|
+ # dst_file = "{}/{}".format(dst_path, new_name)
|
|
|
+ # print("测试数据 dst_file", dst_file)
|
|
|
+ # copy_file(srcfile, dst_path, dst_file)
|
|
|
+ # # print("修改图片耗时:{}".format(time.time() - s))
|
|
|
+
|
|
|
+ def auto_focus(self):
|
|
|
+ # 执行拍照
|
|
|
+ time.sleep(0.2)
|
|
|
+ self.run_capture_action("LiveView_Focus")
|
|
|
+
|
|
|
+ def last_images(self):
|
|
|
+ if not self.hwnd:
|
|
|
+ return
|
|
|
+ # win32gui.SetForegroundWindow(self.hwnd)
|
|
|
+ # self.keyboard.press(Key.ctrl)
|
|
|
+ # self.keyboard.press(Key.left)
|
|
|
+ # self.keyboard.release(Key.left)
|
|
|
+ # self.keyboard.release(Key.ctrl)
|
|
|
+
|
|
|
+ def next_images(self):
|
|
|
+ # 执行拍照
|
|
|
+ if not self.hwnd:
|
|
|
+ return
|
|
|
+ # win32gui.SetForegroundWindow(self.hwnd)
|
|
|
+ # self.keyboard.press(Key.ctrl)
|
|
|
+ # self.keyboard.press(Key.right)
|
|
|
+ # self.keyboard.release(Key.right)
|
|
|
+ # self.keyboard.release(Key.ctrl)
|
|
|
+
|
|
|
+ def test_1(self):
|
|
|
+ if not self.hwnd:
|
|
|
+ return
|
|
|
+ # 执行照片全选与导出
|
|
|
+ # win32gui.SetForegroundWindow(self.hwnd)
|
|
|
+ # self.keyboard.press(Key.ctrl)
|
|
|
+ # self.keyboard.press("a")
|
|
|
+ # self.keyboard.release("a")
|
|
|
+ # self.keyboard.release(Key.ctrl)
|
|
|
+ # time.sleep(1)
|
|
|
+ # # 照片导出
|
|
|
+ # self.keyboard.press(Key.ctrl)
|
|
|
+ # self.keyboard.press("d")
|
|
|
+ # self.keyboard.release("d")
|
|
|
+ # self.keyboard.release(Key.ctrl)
|
|
|
+if __name__ == "__main__":
|
|
|
+ cap = CaptureBasic()
|
|
|
+ cap.auto_focus()
|
|
|
+ print("cccc")
|