处理mac打包后粘贴图片缩略图不可见的问题
Showing
1 changed file
with
32 additions
and
5 deletions
| ... | @@ -2047,6 +2047,34 @@ class ImageGeneratorWindow(QMainWindow): | ... | @@ -2047,6 +2047,34 @@ class ImageGeneratorWindow(QMainWindow): |
| 2047 | """从剪贴板粘贴图像""" | 2047 | """从剪贴板粘贴图像""" |
| 2048 | try: | 2048 | try: |
| 2049 | self.logger.info("开始粘贴剪贴板图片") | 2049 | self.logger.info("开始粘贴剪贴板图片") |
| 2050 | clipboard = QApplication.clipboard() | ||
| 2051 | mime_data = clipboard.mimeData() | ||
| 2052 | |||
| 2053 | # 优先处理文件URL(如 Finder 中复制的图片文件) | ||
| 2054 | if mime_data and mime_data.hasUrls(): | ||
| 2055 | image_files = [] | ||
| 2056 | for url in mime_data.urls(): | ||
| 2057 | if url.isLocalFile(): | ||
| 2058 | file_path = url.toLocalFile() | ||
| 2059 | self.logger.info(f"剪贴板包含文件: {file_path}") | ||
| 2060 | if Path(file_path).suffix.lower() in {'.png', '.jpg', '.jpeg', '.gif', '.bmp', '.webp'}: | ||
| 2061 | image_files.append(file_path) | ||
| 2062 | |||
| 2063 | if image_files: | ||
| 2064 | self.logger.info(f"从剪贴板文件URL添加 {len(image_files)} 张图片") | ||
| 2065 | added = 0 | ||
| 2066 | for fp in image_files: | ||
| 2067 | if self.validate_image_file(fp): | ||
| 2068 | self.uploaded_images.append(fp) | ||
| 2069 | added += 1 | ||
| 2070 | if added > 0: | ||
| 2071 | self.update_image_preview() | ||
| 2072 | self.image_count_label.setText(f"已选择 {len(self.uploaded_images)} 张") | ||
| 2073 | self.status_label.setText(f"● 已粘贴 {added} 张图片") | ||
| 2074 | self.status_label.setStyleSheet("QLabel { color: #34C759; }") | ||
| 2075 | return | ||
| 2076 | |||
| 2077 | # 没有文件URL,尝试获取剪贴板中的图像数据(如截图、从应用复制的图片) | ||
| 2050 | image = self._safe_get_clipboard_image() | 2078 | image = self._safe_get_clipboard_image() |
| 2051 | 2079 | ||
| 2052 | if image is None: | 2080 | if image is None: |
| ... | @@ -2054,7 +2082,7 @@ class ImageGeneratorWindow(QMainWindow): | ... | @@ -2054,7 +2082,7 @@ class ImageGeneratorWindow(QMainWindow): |
| 2054 | QMessageBox.information(self, "信息", "剪贴板中没有图片,请先复制一张图片") | 2082 | QMessageBox.information(self, "信息", "剪贴板中没有图片,请先复制一张图片") |
| 2055 | return | 2083 | return |
| 2056 | 2084 | ||
| 2057 | self.logger.info(f"成功获取剪贴板图像: {image.width()}x{image.height()}") | 2085 | self.logger.info(f"成功获取剪贴板图像数据: {image.width()}x{image.height()}") |
| 2058 | 2086 | ||
| 2059 | # 保存到临时文件 | 2087 | # 保存到临时文件 |
| 2060 | timestamp = datetime.now().strftime("%Y%m%d_%H%M%S_%f") | 2088 | timestamp = datetime.now().strftime("%Y%m%d_%H%M%S_%f") |
| ... | @@ -2070,8 +2098,6 @@ class ImageGeneratorWindow(QMainWindow): | ... | @@ -2070,8 +2098,6 @@ class ImageGeneratorWindow(QMainWindow): |
| 2070 | return | 2098 | return |
| 2071 | 2099 | ||
| 2072 | self.logger.info(f"剪贴板图片已保存: {temp_file_path}") | 2100 | self.logger.info(f"剪贴板图片已保存: {temp_file_path}") |
| 2073 | |||
| 2074 | # 走和"添加图片"按钮完全相同的路径 | ||
| 2075 | self.uploaded_images.append(temp_file_path) | 2101 | self.uploaded_images.append(temp_file_path) |
| 2076 | self.update_image_preview() | 2102 | self.update_image_preview() |
| 2077 | self.image_count_label.setText(f"已选择 {len(self.uploaded_images)} 张") | 2103 | self.image_count_label.setText(f"已选择 {len(self.uploaded_images)} 张") |
| ... | @@ -2222,9 +2248,10 @@ class ImageGeneratorWindow(QMainWindow): | ... | @@ -2222,9 +2248,10 @@ class ImageGeneratorWindow(QMainWindow): |
| 2222 | self.logger.error(f"创建缩略图失败: {file_path}, 错误: {str(e)}", exc_info=True) | 2248 | self.logger.error(f"创建缩略图失败: {file_path}, 错误: {str(e)}", exc_info=True) |
| 2223 | 2249 | ||
| 2224 | # 强制刷新布局和滚动区域 | 2250 | # 强制刷新布局和滚动区域 |
| 2225 | self.img_container.adjustSize() | ||
| 2226 | self.img_layout.activate() | 2251 | self.img_layout.activate() |
| 2227 | self.img_scroll.update() | 2252 | self.img_container.adjustSize() |
| 2253 | self.img_container.repaint() | ||
| 2254 | self.img_scroll.viewport().repaint() | ||
| 2228 | 2255 | ||
| 2229 | # === 诊断日志:排查缩略图不可见问题 === | 2256 | # === 诊断日志:排查缩略图不可见问题 === |
| 2230 | self.logger.info(f"[诊断] img_layout.count = {self.img_layout.count()}") | 2257 | self.logger.info(f"[诊断] img_layout.count = {self.img_layout.count()}") | ... | ... |
-
Please register or sign in to post a comment