문제
QbyTearRay 데이터를 파일에 읽고 쓰는 데 어려움이 있습니다.
내 목표는 qpixmap 데이터를 qbytearray에 저장하고 해당 qbytearray를 파일에 저장하는 것입니다 (파일에서 qbytearray를 qpixmap으로 다시 읽을 수 있음). 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
버퍼를 파일에 작성한 후 qbytearRay를 검색하고 qpixmap :: loadfromdata () 함수를 사용하여 qpixmap에 다시로드 할 수 있기를 원합니다.
더 이상 설명이 필요한지 알려주세요 (대체 접근 방식에도 열려 있습니다. 파일에 qpixmap을 읽고 쓸 수 있어야합니다! :));
해결책
그것은 그것을하는 데 정말 먼 길처럼 보였지만 (그러나 당신의 의견은 더 잘 설명됩니다) :
글쓰기 :
QFile file("yourFile.png");
file.open(QIODevice::WriteOnly);
pixmap.save(&file, "PNG");
읽기 :
QPixmap pixmap;
pixmap.load("yourFile.png");
QBuffer
필요할 때 좋습니다 QIODevice
메모리에 유지하고 싶지만 실제로 디스크로 나가면 불필요한 중간 단계입니다.
편집하다:
PixMaps 및 기타 사항을 단일 파일에 작성하려면 사용하는 것이 좋습니다. QDATASTREAM.
글쓰기 :
QFile file("outfile.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out << QString("almost any qt value object")
<< yourQPixMap << yourQList /* << etc. */;
그런 다음 읽기를 위해 비슷하게 할 수 있습니다.
QFile file("infile.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);
in >> firstQString >> yourQPixmap >> yourList /* >> etc. */;
당신은 당신이 당신이 그것들을 쓴 것과 같은 물건을 읽는지 확인해야합니다. 향후 호환성 두통을 저장하기 위해 Qdatastream 버전을 명시 적으로 설정하십시오.
제휴하지 않습니다 StackOverflow