qt - example - ¿Cómo guardar un objeto QPixmap en un archivo?
qpixmap example (1)
Ese me pareció un largo camino para hacerlo (pero su comentario lo explica mejor):
Para la escritura:
QFile file("yourFile.png");
file.open(QIODevice::WriteOnly);
pixmap.save(&file, "PNG");
Para leer:
QPixmap pixmap;
pixmap.load("yourFile.png");
QBuffer
es excelente cuando necesita un QIODevice
y desea mantenerlo en la memoria, pero si realmente va a salir al disco, es un paso intermedio innecesario.
EDITAR:
Para escribir pixmaps, y otras cosas, en un solo archivo, le recomiendo que use QDataStream .
Para la escritura:
QFile file("outfile.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out << QString("almost any qt value object")
<< yourQPixMap << yourQList /* << etc. */;
Entonces, puedes hacer lo mismo para leer:
QFile file("infile.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);
in >> firstQString >> yourQPixmap >> yourList /* >> etc. */;
Deberá asegurarse de leer en los mismos objetos que los escribió. Para evitar futuros problemas de compatibilidad, configure la versión QDataStream explícitamente.
Tengo problemas para leer y escribir datos de QByteArray en un archivo.
Mi objetivo es guardar los datos de QPixmap en un QByteArray y guardar ese QByteArray en un archivo (con la capacidad de leer este QByteArray de nuevo en el archivo y en un QPixmap). Quiero usar el siguiente código de la documentación de QPixmap:
QPixmap pixmap(<image path>);
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
pixmap.save(&buffer, "PNG"); // writes pixmap into bytes in PNG format
Después de escribir el búfer en un archivo, quiero poder recuperar el QByteArray y volver a cargarlo en un QPixmap usando la función QPixmap :: loadFromData ().
Déjeme saber si se necesita alguna aclaración adicional (también estoy abierto a enfoques alternativos, ¡solo necesito poder leer y escribir el QPixmap en un archivo! :));