문제

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 버전을 명시 적으로 설정하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top