Я пытаюсь установить пиксели в определенное значение RGBA с помощью массива numpy. Im использует QImage.Format_RGBA8888
.
Когда я делаю это с QImage.Format_RGB888
он делает то, что я хочу, но я бы хотел иметь прозрачность.
Я не уверен, что я пропускаю?
Спасибо за любой совет :)
import sys
from PyQt5 import QtWidgets as qw
from PyQt5 import QtGui as qg
from PyQt5 import QtCore as qc
import numpy as np
class MainWindow(qw.QMainWindow):
def __init__(self):
super(qw.QMainWindow, self).__init__()
self.height = 500
self.width = 500
self.setWindowTitle("V.0.0")
self.setMinimumSize(self.width, self.height)
# display
self.display = qw.QLabel()
self.setCentralWidget(self.display)
# self.display.setGeometry(qc.QRect(0, 0, self.width, self.height))
self.background()
self.display.setPixmap(qg.QPixmap.fromImage(self.world_img))
self.show()
def background(self):
self.world = np.zeros([self.width, self.height, 4], dtype=np.uint8)
self.world += 255 # should do all black?
self.world[20, 30, :] = [135, 23, 53, 1]
self.world[21, 31, :] = [135, 23, 53, 1]
self.world[22, 32, :] = [135, 23, 53, 1]
self.world_img = qg.QImage(self.world, self.width, self.height, qg.QImage.Format_RGBA8888)
# Start app
if __name__ == '__main__':
app = qw.QApplication(sys.argv)
Game = MainWindow()
sys.exit(app.exec_())
У вас есть правильная идея!
То, что вам не хватает, это то, что значения RGB 255 255,255 являются белыми, а не черными. Кроме того, прозрачность оси "A" идет от 0 до 255, где 0 непрозрачна и 255 полностью прозрачна.
Примеры:
Небольшая вещь для видимости, рассмотрите установку тестового патча, а не тестового пикселя, например:
self.world[20:40, 30:50, :] = [135, 23, 53, 128]