支持图片文件打开与处理、修复图片加载溢出问题

- 文件对话框添加图片格式过滤(jpg/png/bmp/webp/tiff等)
- 修复 cv2.VideoCapture 打开图片时 FRAME_COUNT 返回 INT64_MIN
  导致 QSlider.setMaximum 溢出的问题,图片直接走 load_as_picture

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
flavioy
2026-04-08 21:41:08 +08:00
parent e801d58e80
commit 9a2f3cc743

View File

@@ -560,6 +560,9 @@ class HomeInterface(QWidget):
if self.video_cap:
self.video_cap.release()
self.video_cap = None
# 如果是图片文件,直接走图片加载路径
if is_image_file(video_path):
return self.load_as_picture(video_path)
self.video_cap = cv2.VideoCapture(get_readable_path(self.video_path))
if not self.video_cap.isOpened():
return self.load_as_picture(video_path)
@@ -570,7 +573,7 @@ class HomeInterface(QWidget):
self.frame_height = int(self.video_cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
self.frame_width = int(self.video_cap.get(cv2.CAP_PROP_FRAME_WIDTH))
self.fps = self.video_cap.get(cv2.CAP_PROP_FPS)
self.update_preview(frame)
self.video_slider.setMaximum(self.frame_count)
self.video_slider.setValue(1)
@@ -601,7 +604,7 @@ class HomeInterface(QWidget):
self,
tr['SubtitleExtractorGUI']['Open'],
"",
"All Files (*.*);;MP4 Files (*.mp4);;FLV Files (*.flv);;WMV Files (*.wmv);;AVI Files (*.avi)"
"All Files (*.*);;Video Files (*.mp4 *.flv *.wmv *.avi *.mkv *.mov);;Image Files (*.jpg *.jpeg *.png *.bmp *.webp *.tiff)"
)
if files:
files_loaded = []