QImageIOHandler Class
QImageIOHandler 클래스는 Qt의 모든 이미지 포맷에 대한 공통 이미지 I/O 인터페이스를 정의합니다. 더 보기...
Header: | #include <QImageIOHandler> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
참고: 이 클래스의 모든 함수는 재인용됩니다.
공용 유형
enum | ImageOption { Size, ClipRect, ScaledSize, ScaledClipRect, Description, …, ImageTransformation } |
enum | Transformation { TransformationNone, TransformationMirror, TransformationFlip, TransformationRotate180, TransformationRotate90, …, TransformationRotate270 } |
flags | Transformations |
공용 함수
QImageIOHandler() | |
virtual | ~QImageIOHandler() |
virtual bool | canRead() const = 0 |
virtual int | currentImageNumber() const |
virtual QRect | currentImageRect() const |
QIODevice * | device() const |
QByteArray | format() const |
virtual int | imageCount() const |
virtual bool | jumpToImage(int imageNumber) |
virtual bool | jumpToNextImage() |
virtual int | loopCount() const |
virtual int | nextImageDelay() const |
virtual QVariant | option(QImageIOHandler::ImageOption option) const |
virtual bool | read(QImage *image) = 0 |
void | setDevice(QIODevice *device) |
void | setFormat(const QByteArray &format) |
void | setFormat(const QByteArray &format) const |
virtual void | setOption(QImageIOHandler::ImageOption option, const QVariant &value) |
virtual bool | supportsOption(QImageIOHandler::ImageOption option) const |
virtual bool | write(const QImage &image) |
정적 공용 멤버
(since 6.0) bool | allocateImage(QSize size, QImage::Format format, QImage *image) |
상세 설명
Qt는 QImageReader 와 QImageWriter 를 통해 이미지를 읽고 쓰기 위해 QImageIOHandler를 사용합니다. 이 클래스에서 파생하여 Qt의 플러그인 메커니즘을 사용하여 자신만의 이미지 포맷 핸들러를 작성할 수도 있습니다.
setDevice()를 호출하여 처리기에 장치를 할당하고 setFormat()를 호출하여 포맷을 할당합니다. 하나의 QImageIOHandler는 둘 이상의 이미지 형식을 지원할 수 있습니다. canRead()는 장치에서 이미지를 읽을 수 있으면 true
을 반환하고, read()와 write()는 이미지 읽기 또는 쓰기가 성공적으로 완료되면 true를 반환합니다.
QImageIOHandler는 loopCount(), imageCount(), nextImageDelay() 및 currentImageNumber() 함수를 통해 애니메이션 형식도 지원합니다.
이미지 핸들러가 어떤 옵션을 지원하는지 확인하기 위해 Qt는 supportsOption() 및 setOption()을 호출합니다. ImageOption 열거형에 있는 옵션을 지원할 수 있는 경우 이 함수를 다시 구현해야 합니다.
이미지 핸들러를 직접 작성하려면 최소한 canRead() 및 read()을 다시 구현해야 합니다. 그런 다음 핸들러를 만들 수 있는 QImageIOPlugin 를 만듭니다. 마지막으로 플러그인을 설치하면 QImageReader 및 QImageWriter 에서 자동으로 플러그인을 로드하고 사용을 시작합니다.
QImageIOPlugin, QImageReader, QImageWriter 를참조하세요 .
멤버 유형 문서
enum QImageIOHandler::ImageOption
이 열거형은 QImageIOHandler 에서 지원하는 다양한 옵션을 설명합니다. 일부 옵션은 이미지의 속성을 쿼리하는 데 사용되며, 다른 옵션은 이미지 작성 방식을 전환하는 데 사용됩니다.
Constant | 값 | 설명 |
---|---|---|
QImageIOHandler::Size | 0 | 이미지의 원래 크기입니다. 이 옵션을 지원하는 핸들러는 이미지 메타데이터에서 이미지의 크기를 읽고 option()에서 이 크기를 QSize 로 반환해야 합니다. |
QImageIOHandler::ClipRect | 1 | 클립 직사각형 또는 ROI(관심 영역). 이 옵션을 지원하는 핸들러는 다른 변환이 적용되기 전에 read()의 원본 이미지에서 제공된 QRect 영역만 읽어야 합니다. |
QImageIOHandler::ScaledSize | 4 | 이미지의 배율 크기. 이 옵션을 지원하는 핸들러는 클립 직사각형 변환(ClipRect)을 적용한 후 제공된 크기( QSize)로 이미지의 크기를 조정해야 합니다. 처리기가 이 옵션을 지원하지 않는 경우 QImageReader 에서 이미지를 읽은 후 크기 조정을 수행합니다. |
QImageIOHandler::ScaledClipRect | 3 | 이미지의 배율이 조정된 클립 직사각형(또는 ROI, 관심 영역)입니다. 이 옵션을 지원하는 처리기는 스케일링(ScaleSize) 또는 일반 클리핑(ClipRect)을 적용한 후 제공된 클립 렉트( QRect)를 적용할 것으로 예상됩니다. 처리기가 이 옵션을 지원하지 않는 경우 QImageReader 은 이미지를 읽은 후 크기 조정된 클립 직사각형을 적용합니다. |
QImageIOHandler::Description | 2 | 이미지 설명. GIF 및 PNG와 같은 일부 이미지 형식에서는 이미지 데이터에 텍스트나 설명을 삽입할 수 있습니다(예: 저작권 정보 저장용). 텍스트는 키-값 쌍으로 저장되는 것이 일반적이지만 일부 형식은 모든 텍스트를 하나의 연속 블록에 저장합니다. QImageIOHandler 는 텍스트를 하나의 QString 로 반환하며, 여기서 키와 값은 ':'로 구분되고 키-값 쌍은 두 개의 개행(\n\n)으로 구분됩니다. 예를 들어, "Title: Sunset\n\nAuthor: 짐 스미스\n사라 존스\n\n". 단일 블록에 텍스트를 저장하는 포맷은 "설명"을 키로 사용할 수 있습니다. |
QImageIOHandler::CompressionRatio | 5 | 이미지 데이터의 압축 비율입니다. 이 옵션을 지원하는 핸들러는 쓰기 시 이 옵션의 값(int)에 따라 압축률을 설정해야 합니다. |
QImageIOHandler::Gamma | 6 | 이미지의 감마 레벨. 이 옵션을 지원하는 핸들러는 쓰기 시 이 옵션의 값(실수)에 따라 이미지 감마 레벨을 설정합니다. |
QImageIOHandler::Quality | 7 | 이미지의 품질 수준입니다. 이 옵션을 지원하는 핸들러는 쓰기 시 이 옵션의 값(int)에 따라 이미지 품질 수준을 설정해야 합니다. |
QImageIOHandler::Name | 8 | 이미지의 이름입니다. 이 옵션을 지원하는 처리기는 이미지 메타데이터에서 이름을 읽고 이를 QString 로 반환하거나 이미지를 쓸 때 이미지 메타데이터에 이름을 저장해야 합니다. |
QImageIOHandler::SubType | 9 | 이미지의 하위 유형. 이 옵션을 지원하는 처리기는 이미지를 읽고 쓸 때 하위 유형 값을 사용하여 도움을 줄 수 있습니다. 예를 들어 PPM 처리기의 하위 유형 값은 "ppm" 또는 "ppmraw"일 수 있습니다. |
QImageIOHandler::IncrementalReading | 10 | 이 옵션을 지원하는 처리기는 이미지를 마치 애니메이션처럼 여러 번에 걸쳐 읽어야 합니다. QImageReader 은 이미지를 애니메이션으로 처리합니다. |
QImageIOHandler::Endianness | 11 | 이미지의 엔디안. 특정 이미지 형식은 빅엔디안 또는 리틀엔디안으로 저장할 수 있습니다. 엔디안을 지원하는 핸들러는 이 옵션의 값을 사용하여 이미지 저장 방법을 결정합니다. |
QImageIOHandler::Animation | 12 | 애니메이션을 지원하는 이미지 형식은 supportsOption()에서 이 값에 대해 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. |
QImageIOHandler::BackgroundColor | 13 | 특정 이미지 형식에서는 배경색을 지정할 수 있습니다. BackgroundColor를 지원하는 핸들러는 이미지를 읽을 때 이 옵션( QColor)으로 배경색을 초기화합니다. |
QImageIOHandler::ImageFormat | 14 | 핸들러가 반환하는 이미지의 데이터 형식입니다. QImage::Format 에 나열된 형식 중 하나 일 수 있습니다. |
QImageIOHandler::SupportedSubTypes | 15 | 다른 저장 변형을 지원하는 이미지 형식은 이 옵션에서 지원되는 변형 이름 목록(QList<QByteArray>)을 반환해야 합니다. |
QImageIOHandler::OptimizedWrite | 16 | 이 옵션을 지원하는 핸들러는 작성 시 최적화 플래그를 켜야 합니다. |
QImageIOHandler::ProgressiveScanWrite | 17 | 이 옵션을 지원하는 핸들러는 이미지를 프로그레시브 스캔 이미지로 작성할 것으로 예상됩니다. |
QImageIOHandler::ImageTransformation | 18 | 이 옵션을 지원하는 핸들러는 이미지의 변환 메타데이터를 읽을 수 있습니다. 이 옵션을 지원하는 핸들러는 변환 자체를 적용해서는 안 됩니다. |
열거형 QImageIOHandler::변환
플래그 QImageIOHandler::변환
이 열거형은 일반적으로 EXIF를 통해 일부 이미지 형식에서 지원하는 다양한 변환 또는 방향을 설명합니다.
상수 | 값 | 설명 |
---|---|---|
QImageIOHandler::TransformationNone | 0 | 변환을 적용하지 않습니다. |
QImageIOHandler::TransformationMirror | 1 | 이미지를 가로로 미러링합니다. |
QImageIOHandler::TransformationFlip | 2 | 이미지를 수직으로 미러링합니다. |
QImageIOHandler::TransformationRotate180 | TransformationMirror | TransformationFlip | 이미지를 180도 회전합니다. 이는 가로 및 세로로 미러링하는 것과 동일합니다. |
QImageIOHandler::TransformationRotate90 | 4 | 이미지를 90도 회전합니다. |
QImageIOHandler::TransformationMirrorAndRotate90 | TransformationMirror | TransformationRotate90 | 이미지를 가로로 미러링한 다음 90도 회전합니다. |
QImageIOHandler::TransformationFlipAndRotate90 | TransformationFlip | TransformationRotate90 | 이미지를 수직으로 미러링한 다음 90도 회전합니다. |
QImageIOHandler::TransformationRotate270 | TransformationRotate180 | TransformationRotate90 | 이미지를 270도 회전합니다. 이는 이미지를 가로, 세로로 모두 미러링한 다음 90도 회전하는 것과 동일합니다. |
변환 유형은 QFlags<Transformation>에 대한 타입 정의입니다. Transformation 값의 OR 조합을 저장합니다.
QImageReader::transformation(), QImageReader::setAutoTransform(), QImageWriter::setTransformation()도 참조하세요 .
멤버 함수 문서
QImageIOHandler::QImageIOHandler()
QImageIOHandler 객체를 생성합니다.
[virtual noexcept]
QImageIOHandler::~QImageIOHandler()
QImageIOHandler 객체를 파괴합니다.
[static, since 6.0]
bool QImageIOHandler::allocateImage(QSize size, QImage::Format format, QImage *image)
이것은 서브클래스의 읽기 함수를 위한 편리한 방법입니다. 이미지 포맷 핸들러는 필요한 할당이 현재 할당 한도를 초과하는 경우 이미지 로드를 거부해야 합니다. 이 함수는 매개변수와 한도를 확인하고 유효하고 필요한 경우 할당을 수행합니다. 성공적으로 반환되면 image 은 주어진 size 과 format 의 유효하고 분리된 QImage 이 됩니다.
이 함수는 Qt 6.0에 도입되었습니다.
QImageReader::allocationLimit()도 참조하십시오 .
[pure virtual]
bool QImageIOHandler::canRead() const
장치에서 이미지를 읽을 수 있는 경우(즉, 이미지 형식이 지원되고 장치에서 이미지를 읽을 수 있으며 초기 헤더 정보에서 이미지를 읽을 수 있음을 시사하는 경우) true
를 반환하고, 그렇지 않으면 false
을 반환합니다.
canRead() 를 다시 구현할 때는 I/O 장치(device())가 원래 상태(예: read() 대신 peek() 사용)로 유지되는지 확인하세요.
read() 및 QIODevice::peek()도 참조하세요 .
[virtual]
int QImageIOHandler::currentImageNumber() const
애니메이션을 지원하는 이미지 형식의 경우 이 함수는 애니메이션에서 현재 이미지의 시퀀스 번호를 반환합니다. 이미지가 read() 이전에 이 함수가 호출되면 -1이 반환됩니다. 시퀀스에서 첫 번째 이미지의 번호는 0입니다.
이미지 형식이 애니메이션을 지원하지 않는 경우 0이 반환됩니다.
read()도 참조하세요 .
[virtual]
QRect QImageIOHandler::currentImageRect() const
현재 이미지의 직사각형을 반환합니다. 이미지에 대한 rect가 정의되지 않은 경우 빈 QRect()가 반환됩니다.
이 함수는 한 번에 프레임의 일부만 업데이트할 수 있는 애니메이션에 유용합니다.
QIODevice *QImageIOHandler::device() const
현재 QImageIOHandler 에 할당된 장치를 반환합니다. 장치가 할당되지 않은 경우 nullptr
이 반환됩니다.
setDevice()도 참조하세요 .
QByteArray QImageIOHandler::format() const
현재 QImageIOHandler 에 할당된 형식을 반환합니다. 할당된 형식이 없으면 빈 문자열이 반환됩니다.
setFormat()도 참조하세요 .
[virtual]
int QImageIOHandler::imageCount() const
애니메이션을 지원하는 이미지 형식의 경우 이 함수는 애니메이션의 이미지 수를 반환합니다. 이미지 형식이 애니메이션을 지원하지 않거나 이미지 수를 확인할 수 없는 경우 0이 반환됩니다.
기본 구현에서는 canRead()가 true
을 반환하면 1을 반환하고, 그렇지 않으면 0을 반환합니다.
[virtual]
bool QImageIOHandler::jumpToImage(int imageNumber)
애니메이션을 지원하는 이미지 형식의 경우 이 함수는 시퀀스 번호가 imageNumber 인 이미지로 이동합니다. 다음 read() 호출은 이 이미지를 읽으려고 시도합니다.
기본 구현은 아무 작업도 수행하지 않고 false
을 반환합니다.
[virtual]
bool QImageIOHandler::jumpToNextImage()
애니메이션을 지원하는 이미지 형식의 경우 이 함수는 다음 이미지로 이동합니다.
기본 구현은 아무 작업도 수행하지 않고 false
을 반환합니다.
[virtual]
int QImageIOHandler::loopCount() const
애니메이션을 지원하는 이미지 형식의 경우 이 함수는 애니메이션이 반복되는 횟수를 반환합니다. 이미지 형식이 애니메이션을 지원하지 않는 경우 0이 반환됩니다.
[virtual]
int QImageIOHandler::nextImageDelay() const
애니메이션을 지원하는 이미지 형식의 경우 이 함수는 다음 이미지를 읽을 때까지 대기할 시간(밀리초)을 반환합니다. 이미지 형식이 애니메이션을 지원하지 않는 경우 0이 반환됩니다.
[virtual]
QVariant QImageIOHandler::option(QImageIOHandler::ImageOption option) const
option 에 할당된 값을 QVariant 로 반환합니다. 값의 유형은 옵션에 따라 다릅니다. 예를 들어 option(Size)는 QSize 변형을 반환합니다.
setOption() 및 supportsOption()도 참조하세요 .
[pure virtual]
bool QImageIOHandler::read(QImage *image)
디바이스에서 이미지를 읽고 image 에 저장합니다. 이미지를 성공적으로 읽으면 true
를 반환하고, 그렇지 않으면 false를 반환합니다.
증분 로딩을 지원하는 이미지 형식과 애니메이션 형식의 경우 이미지 핸들러는 image 이 이전 프레임을 가리킨다고 가정할 수 있습니다.
canRead()도 참조하세요 .
void QImageIOHandler::setDevice(QIODevice *device)
QImageIOHandler 의 장치를 device 로 설정합니다. 이미지 핸들러는 이미지를 읽고 쓸 때 이 장치를 사용합니다.
장치는 한 번만 설정할 수 있으며 canRead(), read(), write() 등을 호출하기 전에 설정해야 합니다. 여러 파일을 읽어야 하는 경우 적절한 QImageIOHandler 서브클래스의 인스턴스를 여러 개 구성하세요.
device()도 참조하세요 .
void QImageIOHandler::setFormat(const QByteArray &format)
QImageIOHandler 의 형식을 format 으로 설정합니다. 이 형식은 여러 이미지 형식을 지원하는 핸들러에 가장 유용합니다.
format()도 참조하세요 .
void QImageIOHandler::setFormat(const QByteArray &format) const
QImageIOHandler 의 형식을 format 으로 설정합니다. 이 형식은 여러 이미지 형식을 지원하는 핸들러에 가장 유용합니다.
이 함수는 canRead()에서 호출할 수 있도록 const로 선언되어 있습니다.
format()도 참조하세요 .
[virtual]
void QImageIOHandler::setOption(QImageIOHandler::ImageOption option, const QVariant &value)
option 옵션을 value 값으로 설정합니다.
option() 및 ImageOption도 참조하세요 .
[virtual]
bool QImageIOHandler::supportsOption(QImageIOHandler::ImageOption option) const
QImageIOHandler 이 option 옵션을 지원하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. 예를 들어 QImageIOHandler 에서 Size 옵션을 지원하는 경우 supportsOption(Size)은 참을 반환해야 합니다.
setOption() 및 option()도 참조하세요 .
[virtual]
bool QImageIOHandler::write(const QImage &image)
지정된 장치에 image 이미지를 씁니다. 성공하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
기본 구현은 아무 작업도 수행하지 않고 false
을 반환합니다.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.