Optimisations¶
Taille des fichiers¶
Ça se passe ici: UBSvgSubsetAdaptor.cpp
void UBSvgSubsetAdaptor::UBSvgSubsetWriter::pixmapItemToLinkedImage(UBGraphicsPixmapItem* pixmapItem) { mXmlWriter.writeStartElement("image"); /** Eric Seigne / RyXéo / AbulEdu : optimisation de taille de fichier * 1. si le fichier source est png on reste en png, mais si c'est un jpeg on reste aussi en jpeg * 2. si c'est un jpeg on regarde la taille qu'il fait sur le document et on le retaille * (pas la peine de stocker un fichier en 8000x4000 s'il est affiché en 1280) **/ QString fileName; QString exportFormat; if( pixmapItem->sourceUrl().toString().toLower().endsWith(".jpeg") || pixmapItem->sourceUrl().toString().toLower().endsWith(".jpg") ) { fileName = UBPersistenceManager::imageDirectory + "/" + pixmapItem->uuid().toString() + ".jpeg"; exportFormat = "JPG"; } else { fileName = UBPersistenceManager::imageDirectory + "/" + pixmapItem->uuid().toString() + ".png"; exportFormat = "PNG"; } QString path = mDocumentPath + "/" + fileName; if (!QFile::exists(path)) { QDir dir; dir.mkdir(mDocumentPath + "/" + UBPersistenceManager::imageDirectory); qDebug() << "ES: Sauvegarde 2 de " << pixmapItem->boundingRect() << " vers " << fileName; if(exportFormat == "JPG") { //On recupere la taille de l'objet pour retailler le fichier en consequence //item->boundingRect() + transformation matrix (à faire, le poc est ici) QPixmap p = pixmapItem->pixmap().scaledToWidth(pixmapItem->boundingRect().width(),Qt::SmoothTransformation); p.save(path, exportFormat.toLocal8Bit()); } else { pixmapItem->pixmap().toImage().save(path, exportFormat.toLocal8Bit()); } } mXmlWriter.writeAttribute(nsXLink, "href", fileName); writeAction(pixmapItem->Delegate()->action()); graphicsItemToSvg(pixmapItem); mXmlWriter.writeEndElement(); }