第十六周总结
一、本周工作内容
主界面开发
完成MainWindow类实现(约800行代码)
实现菜单栏、工具栏和状态栏
开发图像显示和缩放功能
核心功能实现
图像显示处理逻辑
def displayImage(self):
if self.image_processor.image:
try:
# 处理不同图像模式
if img.mode == "RGBA":
data = img.convert("RGBA").tobytes("raw", "RGBA")
qimage = QImage(data, img.width, img.height, img.width * 4, QImage.Format.Format_RGBA8888)
elif img.mode == "RGB":
data = img.convert("RGB").tobytes("raw", "RGB")
qimage = QImage(data, img.width, img.height, img.width * 3, QImage.Format.Format_RGB888)
else:
img_rgb = img.convert("RGB")
data = img_rgb.tobytes("raw", "RGB")
qimage = QImage(data, img_rgb.width, img_rgb.height, img_rgb.width * 3, QImage.Format.Format_RGB888)
# 显示图像并调整大小
pixmap = QPixmap.fromImage(qimage)
self.image_label.setPixmap(pixmap)
self.fitImageToWindow()
功能模块开发
文件操作(打开/保存/另存为)
基础编辑(旋转/裁剪/调整大小)
滤镜应用(10种滤镜)
颜色调整(亮度/对比度)
二、技术收获
PyQt6应用
掌握QMainWindow布局
熟练使用QAction创建菜单
实现图像显示和缩放
图像处理技术
滤镜应用示例
def applyFilter(self, filter_name):
if filter_name == 'blur':
self.image_processor.image = Filters.apply_blur(img)
elif filter_name == 'sharpen':
self.image_processor.image = Filters.apply_sharpen(img)
# ...其他滤镜处理
UI设计经验
开发交互式对话框
实现实时预览功能
优化用户体验
三、遇到的问题及解决
图像显示异常
现象:透明通道图像显示异常
解决:区分处理RGBA/RGB模式
if img.mode == "RGBA":
data = img.convert("RGBA").tobytes("raw", "RGBA")
qimage = QImage(data, img.width, img.height, img.width * 4, QImage.Format.Format_RGBA8888)
缩放功能缺陷
现象:连续缩放后图像失真
解决:基于原始图像进行缩放
def zoomIn(self):
self.zoom_factor *= 1.25
self.applyZoom() # 每次缩放都从原始图像重新计算
性能问题
现象:大图像处理卡顿
解决:添加加载状态提示
self.statusBar.showMessage('处理中...')
执行操作
self.statusBar.showMessage('处理完成')
四、代码统计
模块 文件数 代码行数 耗时(h)
主窗口 1 800 12
文件处理 1 100 3
对话框 6 400 8
合计 8 1300 23

浙公网安备 33010602011771号