def trim_cover(self): book_id = self.data.get('id') if not book_id: return from calibre.utils.img import image_from_x, remove_borders_from_image img = image_from_x(self.pixmap) nimg = remove_borders_from_image(img) if nimg is not img: self.last_trim_id = book_id self.last_trim_pixmap = self.pixmap self.update_cover(QPixmap.fromImage(nimg))
def manual_trim_cover(self): book_id = self.data.get('id') if not book_id: return from calibre.gui2.dialogs.trim_image import TrimImage from calibre.utils.img import image_to_data cdata = image_to_data(image_from_x(self.pixmap), fmt='PNG', png_compression_level=1) d = TrimImage(cdata, parent=self) if d.exec() == QDialog.DialogCode.Accepted and d.image_data is not None: self.last_trim_id = book_id self.last_trim_pixmap = self.pixmap self.update_cover(cdata=d.image_data)
def update_cover(self, pmap=None, cdata=None): if pmap is None: pmap = QPixmap() pmap.loadFromData(cdata) if pmap.isNull(): return if pmap.hasAlphaChannel(): pmap = QPixmap.fromImage(blend_image(image_from_x(pmap))) self.pixmap = pmap self.do_layout() self.update() self.update_tooltip(getattr(self.parent(), 'current_path', '')) if not config['disable_animations']: self.animation.start() id_ = self.data.get('id', None) if id_ is not None: self.cover_changed.emit(id_, cdata or pixmap_to_data(pmap))