Форум сайта python.su
Доброго времени суток!
Перейду сразу к делу:
В моей программке пользователь создаёт позицию (товар/услуга и т.д.)
С загрузкой, сохранением данных проблем нет.
К каждой позиции привязана картинка.
Для лучшего отображения в программе картинка должна быть расширения 306х306 пикселей.
Картинка в программке отображается через QLabel -> Pixmap
Дабы не обременять пользователя самостоятельно обрезать картинку создаваемого им позиции я сделал другую программу (так как не смог реализовать данное в PyQt5 (скрин этой программки прикреплен к сообщению)
Там интерфейс максимально простой, перемещаешь изображение мышкой, колесиком увеличиваешь или уменьшаешь. при сохранении, сохраняется лишь тот квадрат по центру формата 306х306 пикселей.
В общем, решил с нуля переделать всю программу целиком и интегрировать функцию обрезки картинки.
Вопрос следующий:
Через какой инструмент можно в PyQt5 осуществлять подобные манипуляции с изображением?
Кто сталкивался с подобной необходимостью, прошу поделится наработками.
Прикреплённый файлы:
скрин.jpg (82,4 KБ)
Офлайн
https://stackoverflow.com/questions/7010611/how-can-i-crop-an-image-in-qt
Офлайн
RodegastСпасибо за информацию, но я ищу способ обрезки не через код мною, а через интерфейс пользователем приложения.
https://stackoverflow.com/questions/7010611/how-can-i-crop-an-image-in-qt
photoopen = QFileDialog.getOpenFileName(self, 'Open file', os.environ['USERPROFILE'] + '\Desktop\\', 'Изображение (*.bmp *.jpg *.png)', )[0] if not photoopen == "": pixmap = QPixmap(photoopen) self.pix.setGeometry(0, 0, pixmap.width(), pixmap.height()) self.pix.setPixmap(pixmap) self.vbar.setValue(0) self.hbar.setValue(0)
self.vbar.setRange(0, self.area.verticalScrollBar().maximum()) self.hbar.setRange(0, self.area.horizontalScrollBar().maximum())
Прикреплённый файлы:
скрин.jpg (87,0 KБ)
Офлайн
Вопрос закрыт, проблему решил костылем
при загрузке изображения:
photoopen = QFileDialog.getOpenFileName(self, 'Open file', os.environ['USERPROFILE'] + '\Desktop\\','Изображение (*.bmp *.jpg *.png)', )[0] if not photoopen == "": global pmap pixmap = QPixmap(photoopen) pmap = pixmap self.pix.setGeometry(0, 0, pixmap.width(), pixmap.height()) self.pix.setPixmap(pixmap) self.vbar.setValue(0) self.hbar.setValue(0) self.vbar.setRange(0, 200) self.hbar.setRange(0, 200)
self.vbar.valueChanged.connect(self.refreshbars) self.hbar.valueChanged.connect(self.refreshbars)
def refreshbars(self): self.area.verticalScrollBar().setValue(self.vbar.value()) self.area.horizontalScrollBar().setValue(self.hbar.value()) self.vbar.setRange(0, self.area.verticalScrollBar().maximum()) self.hbar.setRange(0, self.area.horizontalScrollBar().maximum())
Офлайн