e554cf55 by 柴进

处理mac打包后粘贴图片缩略图不可见的问题

1 parent dd2274bf
......@@ -2047,6 +2047,34 @@ class ImageGeneratorWindow(QMainWindow):
"""从剪贴板粘贴图像"""
try:
self.logger.info("开始粘贴剪贴板图片")
clipboard = QApplication.clipboard()
mime_data = clipboard.mimeData()
# 优先处理文件URL(如 Finder 中复制的图片文件)
if mime_data and mime_data.hasUrls():
image_files = []
for url in mime_data.urls():
if url.isLocalFile():
file_path = url.toLocalFile()
self.logger.info(f"剪贴板包含文件: {file_path}")
if Path(file_path).suffix.lower() in {'.png', '.jpg', '.jpeg', '.gif', '.bmp', '.webp'}:
image_files.append(file_path)
if image_files:
self.logger.info(f"从剪贴板文件URL添加 {len(image_files)} 张图片")
added = 0
for fp in image_files:
if self.validate_image_file(fp):
self.uploaded_images.append(fp)
added += 1
if added > 0:
self.update_image_preview()
self.image_count_label.setText(f"已选择 {len(self.uploaded_images)} 张")
self.status_label.setText(f"● 已粘贴 {added} 张图片")
self.status_label.setStyleSheet("QLabel { color: #34C759; }")
return
# 没有文件URL,尝试获取剪贴板中的图像数据(如截图、从应用复制的图片)
image = self._safe_get_clipboard_image()
if image is None:
......@@ -2054,7 +2082,7 @@ class ImageGeneratorWindow(QMainWindow):
QMessageBox.information(self, "信息", "剪贴板中没有图片,请先复制一张图片")
return
self.logger.info(f"成功获取剪贴板图像: {image.width()}x{image.height()}")
self.logger.info(f"成功获取剪贴板图像数据: {image.width()}x{image.height()}")
# 保存到临时文件
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S_%f")
......@@ -2070,8 +2098,6 @@ class ImageGeneratorWindow(QMainWindow):
return
self.logger.info(f"剪贴板图片已保存: {temp_file_path}")
# 走和"添加图片"按钮完全相同的路径
self.uploaded_images.append(temp_file_path)
self.update_image_preview()
self.image_count_label.setText(f"已选择 {len(self.uploaded_images)} 张")
......@@ -2222,9 +2248,10 @@ class ImageGeneratorWindow(QMainWindow):
self.logger.error(f"创建缩略图失败: {file_path}, 错误: {str(e)}", exc_info=True)
# 强制刷新布局和滚动区域
self.img_container.adjustSize()
self.img_layout.activate()
self.img_scroll.update()
self.img_container.adjustSize()
self.img_container.repaint()
self.img_scroll.viewport().repaint()
# === 诊断日志:排查缩略图不可见问题 ===
self.logger.info(f"[诊断] img_layout.count = {self.img_layout.count()}")
......