2017-12-27 3 views
0

나는 스캐너를 사용합니다. Ihe 스캐너 출력이 tiff 또는 pnm 형식입니다. 하지만 QImage에 이러한 형식을로드 할 수 없습니다. Qt는은 TIFF 형식을 모르기 때문에Qiff에서 tiff 또는 pnm을 jpeg로 변환하는 방법

QProcess process; 
process.start("scanimage -d epjitsu --format=tiff"); 
process.waitForFinished(240000); 
QByteArray ba = process.readAllStandardOutput(); 
QImage image; 
image.fromData(ba); 

image.fromData (바)는 실패합니다. 유일한 방법, 그것을 변환하는 방법, bytearray를 파일에 저장하고 리눅스 유틸리티로 변환하여 변환하십시오. 그러나 나는 이런 식으로 가고 싶지 않다. 나는 Qt에서 어떻게 든 그것을하고 싶다.

+0

설명서에 따르면 tiff가 지원됩니다. http://doc.qt.io/qt-5/qtimageformats-index.html – eyllanesc

+0

qt가 시스템 ti를 사용하도록 구성된 경우 일 수 있습니다 ff를 지원하지만 존재하지 않습니다. 어느 것이 내가 맞춤형 Qt를 선호하는 이유는 그 묶음 이미지 형식이 안전한면에 있기 때문입니다. – dtech

+0

Qt 문서를 여러 번 읽었습니다. 그러나 나는 그것을 사용하지 않아야한다. CentOS 및 Ubuntu에서 사용하려면 무엇을해야합니까? –

답변

0

GDAL을 사용하여 tiff 파일을 열 수 있으며 QImage를 만들 수 있습니다. 이 QImage는 jpg 형식으로 저장할 수 있습니다.

0

Qt는 libtiff를 통해 tiff를 지원합니다.

기본 구성 옵션은 시스템에서 제공하는 모든 것을 사용한다는 것입니다. 즉, 시스템에 libtiff가 설치되어 있어야합니다.

-qt-libtiff 구성 플래그를 제공하는 사용자 정의 qt 빌드를 수행 할 수도 있습니다.이 플래그는 번들 된 lib를 사용하여 외부 시스템 라이브러리를 사용하지 않고 qt 바이너리에 통합합니다.

tiff 지원은 "Qt Essentials"모듈에는 없지만 Qt Image Formats 모듈에는 "Qt Add-Ons"의 일부입니다.

마지막으로 파일을 스캔 한 다음 외부 도구를 통해 파일을 지원되는 형식으로 변환 할 수 있습니다.

+0

이 옵션으로 프로젝트를 빌드해야합니다. 아니면 Qt 리소스를 다운로드하여이 옵션을 구축해야합니까? –

+0

@PeterPolak는'QImageReader :: supportedImageFormats()'를 당신을 위해 tiff로 등록합니까? – dtech

+0

나는 tiff를 본다. 그러나 QByteArray에서 QImage로 데이터를로드하면 QImage 객체가 잘못된 그림을 보유합니다. –

0

qt는 tiff 형식을 알고 있습니다. 코드를 수행하면 나를 위해 작동 :

QFile f("Untitled.tiff"); 
if (!f.open(QIODevice::ReadOnly)) { 
    return; 
} 
QByteArray ar(f.size(), ' '); 
f.read(ar.data(), ar.size()); 
QImage img; 

img.loadFromData(ar); 
if (!img.isNull()) 
{ 
    QPixmap image = QPixmap::fromImage(img); 
    ui.tiffLabel->setFixedSize(img.size()); 
    ui.tiffLabel->setPixmap(image); 
} 

을 당신은 모든 DLL의 종속성을 충족해야합니다

확인 (나는 qtiff.dll supect) 당신의 QByteArray ba이 가능한 이미지를

를 포함하고, 좋은 생각이다 loadFromData insted of fromData

관련 문제