pyQt5中将image = QImage(temp_8bit.data, temp.shape[1], temp.shape[0], QImage.Format_Grayscale8)保持宽高比显示在label控件中
时间: 2024-11-25 08:32:57 浏览: 7
在 PyQt5 中,如果你有一个 8 位灰度数组 `temp_8bit` 并想要将其作为图像显示在 QLabel 控制符上并且保持宽高比,可以按照以下步骤操作:
1. 首先,使用 `QImage` 构造函数加载你的 8 位灰度数据。这里的 `data` 是数组的数据指针,`shape` 是数组的维度,表示宽度(第二个元素)和高度(第一个元素),以及指定格式 `QImage.Format_Grayscale8` 表示单通道8位灰度图像。
```python
import numpy as np
from PyQt5.QtGui import QImage, QPixmap
temp_8bit = np.array(...) # 你的8位灰度数组
image = QImage(temp_8bit.data, temp_8bit.shape[1], temp_8bit.shape[0], QImage.Format_Grayscale8)
```
2. 确定 QLabel 的大小,并确保按原图宽高比缩放图片。如果 QLabel 已经有特定宽度,可以根据这个宽度计算出新高度。
```python
label_width = self.label.width()
aspect_ratio = float(image.width()) / image.height()
target_height = int(label_width / aspect_ratio)
# 使用缩放选项 Qt.SmoothTransformation 保证平滑缩放
scaled_image = image.scaled(label_width, target_height, Qt.KeepAspectRatio, Qt.SmoothTransformation)
```
3. 将缩放后的图像转换为 QPixmap 并设置到 QLabel 上:
```python
scaled_pixmap = QPixmap.fromImage(scaled_image)
self.label.setPixmap(scaled_pixmap)
self.label.show() # 显示图片
```
阅读全文