Как сохранить виджет в нужном размере, в формате *.jpeg?
Как по нажатию кнопки сохранить изображение (pixmap), но только не то что на экране, а его увеличенную версию.
import sys
import os
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
#Главное окно
class Window(QWidget):
def __init__(self):
super().__init__()
self.resize(511,418)
label=QLabel(self)
label.setPixmap(QPixmap('imgonline-com-ua-Resize-0yi5po7h08mb1g.jpg'))
label.setGeometry(120,50,281,271)
save_photo= QPushButton('Сохранить фото', self)
save_photo.setGeometry(30, 370, 93, 28)
save_photo.setFont(QFont("Bahnschrift SemiLight SemiConde", 5))
save_photo.clicked.connect(self.Save_Photo)
def Save_Photo(self):
pass
#здесь функция сохранения фото
# фото для сохранения : '2234719f-7737-4118-9ec3-6dfa0a6a26a7.jpeg'
if __name__ == '__main__':
app =QApplication(sys.argv)
my_window = Window()
my_window.show()
sys.exit(app.exec_())
Update:
Под словом "увеличенная версия" я имею ввиду то, что у человека на экране изображено фото, которое очень сжато в размерах, оно очень маленькое и если его сохранить, то пользователь мало что увидит.
И чтобы пользователю было комфортно смотреть на фото у меня есть это же фото, но большего размера.
И в данном случае у меня не получается написать функцию для сохранения фото.
Я пробовала метод save().
Ответы (1 шт):
Sorry, вы плохо объясняете задачу и проблему, которая у вас возникает.
Сжато в размерах - это как? и почему фото сжато?
Вы должны приложить код, который демонстрирует эту проблему
и прикрепить изображение, которое, как вы говорите, большего размера.
Если я правильно понял вашу задачу, то приложение может выглядеть, примерно так.
QPixmap QWidget::grab(const QRect &rectangle = QRect(QPoint(0, 0), QSize(-1, -1)))
Преобразует виджет в растровое изображение, ограниченное заданным прямоугольником. Если у виджета есть дочерние элементы, то они также прорисовываются в соответствующих позициях.
import sys
from PyQt5.Qt import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.label = QLabel(self)
self.pixmap = QPixmap('lena.jpg') # +
# self.label.setPixmap(QPixmap('lena.jpg'))
self.label.setPixmap(self.pixmap.scaled(100, 100)) # +
self.label.setGeometry(120, 50, 281, 271)
self.label.setAlignment(Qt.AlignCenter) # +++
self.label.setStyleSheet("background-color: #105652;") # +++
self.setStyleSheet("background-color: #775652;") # +++
button_save_photo= QPushButton('Сохранить фото', self)
button_save_photo.setGeometry(30, 370, 93, 28)
button_save_photo.setFont(QFont("Bahnschrift SemiLight SemiConde", 7))
button_save_photo.clicked.connect(self.save_photo)
button_save_photo.setStyleSheet("background-color: #7799dd;")
# !!! vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
def save_photo(self):
#здесь функция сохранения фото
# фото для сохранения : '2234719f-7737-4118-9ec3-6dfa0a6a26a7.jpeg'
label = QLabel()
label.setPixmap(self.pixmap)
print(f'self.pixmap.size = {self.pixmap.size()}')
image = label.grab()
image.save('2234719f-7737-4118-9ec3-6dfa0a6a26a7.jpeg')
label.deleteLater()
self.label_new = QLabel()
self.label_new.setPixmap(
QPixmap('2234719f-7737-4118-9ec3-6dfa0a6a26a7.jpeg'))
self.label_new.show()
# !!! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
if __name__ == '__main__':
app =QApplication(sys.argv)
my_window = Window()
my_window.resize(511, 418)
my_window.show()
sys.exit(app.exec_())
lena.jpg

