Fix weird bug with images in ImageLabel
This commit is contained in:
parent
e7038be33a
commit
374e8193ac
|
@ -1,13 +1,9 @@
|
|||
import io
|
||||
import json
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
|
||||
from PIL import Image
|
||||
from PIL.ImageQt import ImageQt
|
||||
from PyQt5 import QtGui
|
||||
from PyQt5.QtCore import pyqtSignal, QSettings, Qt, QUrl, QJsonParseError, QJsonDocument
|
||||
from PyQt5.QtGui import QPixmap
|
||||
from PyQt5.QtCore import pyqtSignal, QUrl, QJsonParseError, QJsonDocument
|
||||
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
|
||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel
|
||||
|
||||
|
@ -55,37 +51,8 @@ class GameWidget(QWidget):
|
|||
logger.info(", ".join([img["type"] for img in json_info["keyImages"]]))
|
||||
# print(json_info["keyImages"])
|
||||
|
||||
save = QSettings().value("cache_images", True, bool)
|
||||
if os.path.exists(p := os.path.join(self.path, f"{json_info['title']}_wide.png")) and save:
|
||||
self.image.setPixmap(QPixmap(p)
|
||||
.scaled(self.width, int(self.width * 9 / 16), transformMode=Qt.SmoothTransformation))
|
||||
else:
|
||||
for img in json_info["keyImages"]:
|
||||
if img["type"] in ["DieselStoreFrontWide", "VaultClosed"]:
|
||||
if img["type"] == "VaultClosed" and self.title != "Mystery Game":
|
||||
continue
|
||||
self.image_request = self.manager.get(QNetworkRequest(QUrl(img["url"])))
|
||||
self.image_request.finished.connect(lambda: self.image_ready(save))
|
||||
break
|
||||
else:
|
||||
# No image found
|
||||
logger.error(f"No image found for {self.title}")
|
||||
|
||||
self.setLayout(self.layout)
|
||||
|
||||
def image_ready(self, save: bool):
|
||||
if self.image_request:
|
||||
if self.image_request.error() == QNetworkReply.NoError:
|
||||
data = self.image_request.readAll().data()
|
||||
image: Image.Image = Image.open(io.BytesIO(data))
|
||||
image = image.resize((self.width, int(self.width * 9 / 16)))
|
||||
|
||||
if save:
|
||||
image.save(os.path.join(self.path, self.json_info["title"] + "_wide.png"), format="png")
|
||||
pixmap = QPixmap()
|
||||
pixmap.fromImage(ImageQt(image))
|
||||
self.image.setPixmap(pixmap)
|
||||
|
||||
def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None:
|
||||
self.show_info.emit(self.json_info)
|
||||
|
||||
|
|
|
@ -63,7 +63,6 @@ class ShopGame:
|
|||
tmp.links.append(tuple((item.replace("link", ""), links[item])))
|
||||
tmp.available_voice_langs = api_data["data"]["requirements"].get("languages", "Failed")
|
||||
tmp.reqs = {}
|
||||
print(api_data["data"]["requirements"])
|
||||
for i, system in enumerate(api_data["data"]["requirements"].get("systems", [])):
|
||||
try:
|
||||
tmp.reqs[system["systemType"]] = {}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import io
|
||||
import os
|
||||
from logging import getLogger
|
||||
|
||||
from PIL import Image
|
||||
from PIL.ImageQt import ImageQt
|
||||
from PyQt5.QtCore import Qt, QRect, QSize, QPoint, pyqtSignal, QUrl, QSettings
|
||||
from PyQt5.QtGui import QMovie, QPixmap
|
||||
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
|
||||
|
@ -13,6 +13,7 @@ from qtawesome import icon
|
|||
from rare import style_path
|
||||
from rare.ui.utils.pathedit import Ui_PathEdit
|
||||
|
||||
logger = getLogger("ExtraWidgets")
|
||||
|
||||
class FlowLayout(QLayout):
|
||||
def __init__(self, parent=None, margin=-1, hspacing=-1, vspacing=-1):
|
||||
|
@ -284,18 +285,24 @@ class ImageLabel(QLabel):
|
|||
self.show_image()
|
||||
|
||||
def image_ready(self):
|
||||
self.setPixmap(QPixmap())
|
||||
if self.request:
|
||||
if self.request.error() == QNetworkReply.NoError:
|
||||
|
||||
data = self.request.readAll().data()
|
||||
image: Image.Image = Image.open(io.BytesIO(data))
|
||||
image = image.resize((self.img_size[0], self.img_size[1]))
|
||||
|
||||
if QSettings().value("cache_images", True, bool):
|
||||
image.save(os.path.join(self.path, self.name), format="png")
|
||||
byte_array = io.BytesIO()
|
||||
image.save(byte_array, format="PNG")
|
||||
# pixmap = QPixmap.fromImage(ImageQt(image))
|
||||
pixmap = QPixmap()
|
||||
pixmap.fromImage(ImageQt(image))
|
||||
pixmap.loadFromData(byte_array.getvalue())
|
||||
# pixmap = QPixmap.fromImage(ImageQt.ImageQt(image))
|
||||
self.setPixmap(pixmap)
|
||||
else:
|
||||
logger.error(self.request.errorString())
|
||||
else:
|
||||
return
|
||||
|
||||
|
|
Loading…
Reference in a new issue