QImageIOHandler Class
QImageIOHandler 클래스는 Qt Image Formats의 모든 이미지 형식에 대한 공통 이미지 I/O 인터페이스를 정의합니다. 더 보기...
| 헤더: | #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`에서 지원하는 다양한 옵션을 설명합니다. 일부 옵션은 이미지의 속성을 조회하는 데 사용되며, 다른 옵션은 이미지가 기록되는 방식을 전환하는 데 사용됩니다.
| 상수 | 값 | 설명 |
|---|---|---|
QImageIOHandler::Size | 0 | 이미지의 원본 크기. 이 옵션을 지원하는 핸들러는 이미지 메타데이터에서 이미지 크기를 읽어와, ` option()`에서 이 크기를 ` QSize`로 반환해야 합니다. |
QImageIOHandler::ClipRect | 1 | 클립 영역(clip rect) 또는 ROI(Region Of Interest). 이 옵션을 지원하는 핸들러는 다른 변환이 적용되기 전에 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 : Jim Smith\nSarah Jones\n\n "와 같습니다. 텍스트를 단일 블록으로 저장하는 형식의 경우 "Description"을 키로 사용할 수 있습니다. |
QImageIOHandler::CompressionRatio | 5 | 이미지 데이터의 압축률. 이 옵션을 지원하는 핸들러는 쓰기 시 이 옵션의 값(int)에 따라 압축률을 설정해야 합니다. |
QImageIOHandler::Gamma | 6 | 이미지의 감마 레벨. 이 옵션을 지원하는 핸들러는 쓰기 시 이 옵션의 값(float)에 따라 이미지 감마 레벨을 설정해야 합니다. |
QImageIOHandler::Quality | 7 | 이미지의 품질 수준입니다. 이 옵션을 지원하는 핸들러는 쓰기 시 이 옵션의 값(정수)에 따라 이미지 품질 수준을 설정해야 합니다. |
QImageIOHandler::Name | 8 | 이미지의 이름입니다. 이 옵션을 지원하는 핸들러는 이미지 메타데이터에서 이름을 읽어와 ` QString`로 반환해야 하며, 이미지를 기록할 때는 이름을 이미지 메타데이터에 저장해야 합니다. |
QImageIOHandler::SubType | 9 | 이미지의 하위 유형입니다. 이 옵션을 지원하는 핸들러는 이미지를 읽고 쓸 때 하위 유형 값을 활용할 수 있습니다. 예를 들어, PPM 핸들러의 하위 유형 값은 "ppm" 또는 "ppmraw"일 수 있습니다. |
QImageIOHandler::IncrementalReading | 10 | 이 옵션을 지원하는 핸들러는 마치 애니메이션인 것처럼 여러 단계에 걸쳐 이미지를 읽어야 합니다. ` QImageReader `는 해당 이미지를 애니메이션으로 처리합니다. |
QImageIOHandler::Endianness | 11 | 이미지의 엔디안(endianness). 특정 이미지 형식은 BigEndian 또는 LittleEndian으로 저장될 수 있습니다. 엔디안을 지원하는 핸들러는 이 옵션의 값을 사용하여 이미지가 어떻게 저장되어야 하는지 결정합니다. |
QImageIOHandler::Animation | 12 | 애니메이션을 지원하는 이미지 형식은 supportsOption()에서 이 값에 대해 true를 반환하며, 그렇지 않은 경우 false를 반환합니다. |
QImageIOHandler::BackgroundColor | 13 | 특정 이미지 형식에서는 배경색을 지정할 수 있습니다. BackgroundColor를 지원하는 핸들러는 이미지를 읽을 때 배경색을 이 옵션( QColor)의 값으로 초기화합니다. |
QImageIOHandler::ImageFormat | 14 | 핸들러가 반환하는 이미지의 데이터 형식입니다. 이는 QImage::Format 에 나열된 형식 중 하나일 수 있습니다. |
QImageIOHandler::SupportedSubTypes | 15 | 서로 다른 저장 변형을 지원하는 이미지 형식은 이 옵션에 지원되는 변형 이름 목록(QList<QByteArray>)을 반환해야 합니다. |
QImageIOHandler::OptimizedWrite | 16 | 이 옵션을 지원하는 핸들러는 쓰기 시 최적화 플래그를 활성화해야 합니다. |
QImageIOHandler::ProgressiveScanWrite | 17 | 이 옵션을 지원하는 핸들러는 이미지를 프로그레시브 스캔 이미지로 기록해야 합니다. |
QImageIOHandler::ImageTransformation | 18 | 이 옵션을 지원하는 핸들러는 이미지의 변환 메타데이터를 읽을 수 있습니다. 이 옵션을 지원하는 핸들러는 변환 자체를 적용해서는 안 됩니다. |
enum QImageIOHandler::Transformation
flags QImageIOHandler::Transformations
이 열거형은 일부 이미지 형식이 지원하는 다양한 변환 또는 방향 설정을 설명하며, 일반적으로 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도 회전하는 것과 같습니다. |
Transformations 유형은 QFlags<Transformation>에 대한 typedef입니다. 이 유형은 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
현재 이미지의 직사각형 영역을 반환합니다. 이미지에 직사각형 영역이 정의되어 있지 않은 경우, 빈 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)는 true를 반환해야 합니다.
setOption() 및 option()도 참조하십시오 .
[virtual] bool QImageIOHandler::write(const QImage &image)
지정된 장치에 이미지 image 를 기록합니다. 성공 시 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.
기본 구현은 아무 작업도 수행하지 않고, 단순히 false 를 반환합니다.
© 2026 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.