QImageWriter Class

QImageWriter 클래스는 파일이나 다른 장치에 이미지를 쓰기 위한 형식 독립적인 인터페이스를 제공합니다. 더 보기...

Header: #include <QImageWriter>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

참고: 이 클래스의 모든 함수는 재진입합니다.

공용 유형

enum ImageWriterError { DeviceError, UnsupportedFormatError, InvalidImageError, UnknownError }

공용 함수

QImageWriter()
QImageWriter(QIODevice *device, const QByteArray &format)
QImageWriter(const QString &fileName, const QByteArray &format = QByteArray())
~QImageWriter()
bool canWrite() const
int compression() const
QIODevice *device() const
QImageWriter::ImageWriterError error() const
QString errorString() const
QString fileName() const
QByteArray format() const
bool optimizedWrite() const
bool progressiveScanWrite() const
int quality() const
void setCompression(int compression)
void setDevice(QIODevice *device)
void setFileName(const QString &fileName)
void setFormat(const QByteArray &format)
void setOptimizedWrite(bool optimize)
void setProgressiveScanWrite(bool progressive)
void setQuality(int quality)
void setSubType(const QByteArray &type)
void setText(const QString &key, const QString &text)
void setTransformation(QImageIOHandler::Transformations transform)
QByteArray subType() const
QList<QByteArray> supportedSubTypes() const
bool supportsOption(QImageIOHandler::ImageOption option) const
QImageIOHandler::Transformations transformation() const
bool write(const QImage &image)

정적 공용 멤버

QList<QByteArray> imageFormatsForMimeType(const QByteArray &mimeType)
QList<QByteArray> supportedImageFormats()
QList<QByteArray> supportedMimeTypes()

상세 설명

QImageWriter는 이미지를 저장하기 전에 압축 수준 및 품질과 같은 형식별 옵션 설정을 지원합니다. 이러한 옵션이 필요하지 않은 경우 QImage::save() 또는 QPixmap::save()를 대신 사용할 수 있습니다.

이미지를 저장하려면 먼저 QImageWriter 객체를 생성합니다. 파일 이름 또는 디바이스 포인터와 이미지 형식을 QImageWriter의 생성자에게 전달합니다. 그런 다음 setQuality()를 호출하여 품질과 같은 여러 옵션을 설정할 수 있습니다. canWrite(즉, 이미지 형식이 지원되고 장치가 쓰기를 위해 열려 있는 경우) QImageWriter가 이미지를 쓸 수 있으면 true 을 반환합니다. write ()를 호출하여 장치에 이미지를 씁니다.

이미지를 쓸 때 오류가 발생하면 write()는 false를 반환합니다. 그런 다음 error()를 호출하여 발생한 오류의 유형을 찾거나 errorString()를 호출하여 사람이 읽을 수 있는 오류 설명을 확인할 수 있습니다.

supportedImageFormats()를 호출하여 QImageWriter가 작성할 수 있는 형식 목록을 확인합니다. QImageWriter는 쓰기를 지원하는 모든 이미지 형식 플러그인뿐만 아니라 모든 내장 이미지 형식을 지원합니다.

참고: QImageWriter는 할당된 파일 또는 장치에 대한 독점적 제어를 가정합니다. QImageWriter 객체의 수명 기간 동안 할당된 파일 또는 장치를 수정하려고 시도하면 정의되지 않은 결과가 생성됩니다. 리소스에 즉시 액세스해야 하는 경우 범위를 사용하는 것이 좋습니다.

예를 들어

QString imagePath(QStringLiteral("path/image.jpeg"));
QImage image(64, 64, QImage::Format_RGB32);
image.fill(Qt::red);
{
    QImageWriter writer(imagePath);
    writer.write(image);
}

QFile::rename(imagePath,
              QStringLiteral("path/other_image.jpeg"));

QImageReader, QImageIOHandler, QImageIOPlugin, QColorSpace참조하세요 .

멤버 유형 문서

enum QImageWriter::ImageWriterError

이 열거형은 QImageWriter 를 사용하여 이미지를 작성할 때 발생할 수 있는 오류를 설명합니다.

상수설명
QImageWriter::DeviceError1QImageWriter 이미지 데이터를 쓸 때 디바이스 오류가 발생했습니다. 무엇이 잘못되었는지에 대한 자세한 내용은 장치에 문의하십시오.
QImageWriter::UnsupportedFormatError2요청된 이미지 포맷을 Qt가 지원하지 않습니다.
QImageWriter::InvalidImageError3잘못된 QImage 을 쓰려고 시도했습니다. 잘못된 이미지의 예는 null QImage 입니다.
QImageWriter::UnknownError0알 수 없는 오류가 발생했습니다. write () 호출 후 이 값을 얻는다면 QImageWriter 의 버그로 인한 것일 가능성이 높습니다.

멤버 함수 문서

QImageWriter::QImageWriter()

빈 QImageWriter 객체를 생성합니다. 쓰기 전에 setFormat()를 호출하여 이미지 형식을 설정한 다음 setDevice() 또는 setFileName()를 호출해야 합니다.

[explicit] QImageWriter::QImageWriter(QIODevice *device, const QByteArray &format)

장치 device 와 이미지 형식 format 을 사용하여 QImageWriter 객체를 구성합니다.

[explicit] QImageWriter::QImageWriter(const QString &fileName, const QByteArray &format = QByteArray())

이미지 형식 format 을 사용하여 이름이 fileName 인 파일에 쓸 QImageWriter 객체를 구축합니다. format 이 제공되지 않으면 QImageWriter는 fileName 의 확장자를 검사하여 이미지 형식을 감지합니다.

[noexcept] QImageWriter::~QImageWriter()

QImageWriter 객체를 파괴합니다.

bool QImageWriter::canWrite() const

QImageWriter 이 이미지를 쓸 수 있는 경우, 즉 이미지 형식이 지원되고 할당된 장치가 읽을 수 있도록 열려 있는 경우 true 을 반환합니다.

write(), setDevice() 및 setFormat()도 참조하세요 .

int QImageWriter::compression() const

이미지의 압축을 반환합니다.

setCompression()도 참조하세요 .

QIODevice *QImageWriter::device() const

현재 QImageWriter 에 할당된 디바이스를 반환하거나 디바이스가 할당되지 않은 경우 nullptr 을 반환합니다.

setDevice()도 참조하세요 .

QImageWriter::ImageWriterError QImageWriter::error() const

마지막으로 발생한 오류 유형을 반환합니다.

ImageWriterErrorerrorString()도 참조하세요 .

QString QImageWriter::errorString() const

마지막으로 발생한 오류에 대한 사람이 읽을 수 있는 설명을 반환합니다.

error()도 참조하세요 .

QString QImageWriter::fileName() const

현재 할당된 디바이스가 파일인 경우 또는 setFileName()가 호출된 경우 이 함수는 QImageWriter 이 쓰는 파일의 이름을 반환합니다. 그렇지 않은 경우(즉, 장치가 할당되지 않았거나 장치가 파일이 아닌 경우) 빈 QString 이 반환됩니다.

setFileName() 및 setDevice()도 참조하세요 .

QByteArray QImageWriter::format() const

이미지 작성에 사용하는 QImageWriter 형식을 반환합니다.

setFormat()도 참조하세요 .

[static] QList<QByteArray> QImageWriter::imageFormatsForMimeType(const QByteArray &mimeType)

mimeType 에 해당하는 이미지 형식의 목록을 반환합니다.

이 함수를 호출하기 전에 QGuiApplication 인스턴스를 만들어야 합니다.

supportedImageFormats() 및 supportedMimeTypes()도 참조하세요 .

bool QImageWriter::optimizedWrite() const

이미지 쓰기에 최적화가 켜져 있는지 여부를 반환합니다.

setOptimizedWrite()도 참조하세요 .

bool QImageWriter::progressiveScanWrite() const

이미지를 프로그레시브 이미지로 작성할지 여부를 반환합니다.

setProgressiveScanWrite()도 참조하세요 .

int QImageWriter::quality() const

이미지 형식의 품질 설정을 반환합니다.

setQuality()도 참조하세요 .

void QImageWriter::setCompression(int compression)

이미지의 압축을 설정하는 이미지 형식별 함수입니다. 압축 설정을 지원하지 않는 이미지 형식의 경우 이 값은 무시됩니다.

compression 의 값 범위는 이미지 형식에 따라 다릅니다. 예를 들어 "tiff" 형식은 0(압축 없음)과 1(LZW 압축)의 두 가지 값을 지원합니다.

compression()도 참조하세요 .

void QImageWriter::setDevice(QIODevice *device)

QImageWriter 의 디바이스를 device 로 설정합니다. 디바이스가 이미 설정되어 있는 경우 이전 디바이스는 QImageWriter 에서 제거되며, 그렇지 않은 경우 변경되지 않습니다.

디바이스가 아직 열려 있지 않은 경우 QImageWriter 는 open()을 호출하여 QIODeviceBase::WriteOnly 모드에서 디바이스를 열려고 시도합니다. QProcess , QTcpSocket, QUdpSocket 와 같이 장치를 여는 데 더 많은 로직이 필요한 특정 장치에서는 이 방법이 작동하지 않는다는 점에 유의하세요.

device() 및 setFileName()도 참조하세요 .

void QImageWriter::setFileName(const QString &fileName)

QImageWriter 의 파일 이름을 fileName 으로 설정합니다. 내부적으로 QImageWriterQFile 을 생성하여 QIODevice::WriteOnly 모드에서 열고 이미지를 작성할 때 이 파일을 사용합니다.

fileName() 및 setDevice()도 참조하세요 .

void QImageWriter::setFormat(const QByteArray &format)

이미지를 작성할 때 사용할 QImageWriter 형식을 format 으로 설정합니다. format 은 대소문자를 구분하지 않는 텍스트 문자열입니다. 예시:

QImageWriter writer;
writer.setFormat("png"); // same as writer.setFormat("PNG");

supportedImageFormats()를 호출하여 QImageWriter 지원 형식의 전체 목록을 확인할 수 있습니다.

format()도 참조하세요 .

void QImageWriter::setOptimizedWrite(bool optimize)

이미지 작성 시 optimize 플래그를 설정하는 이미지 형식별 함수입니다. optimize 플래그 설정을 지원하지 않는 이미지 형식의 경우 이 값은 무시됩니다.

기본값은 false입니다.

optimizedWrite()도 참조하세요 .

void QImageWriter::setProgressiveScanWrite(bool progressive)

이미지 작성 시 progressive 스캔을 켜는 이미지 형식별 기능입니다. progressive 스캔 플래그 설정을 지원하지 않는 이미지 형식의 경우 이 값은 무시됩니다.

기본값은 false입니다.

progressiveScanWrite()도 참조하세요 .

void QImageWriter::setQuality(int quality)

이미지 형식의 품질 설정을 quality 로 설정합니다.

일부 이미지 형식, 특히 손실 이미지 형식은 a) 결과 이미지의 시각적 품질과 b) 인코딩 실행 시간 및 압축 수준 간의 절충점을 수반합니다. 이 함수는 이를 지원하는 이미지 형식에 대해 해당 트레이드 오프 수준을 설정합니다. 다른 형식의 경우 이 값은 무시됩니다.

quality 의 값 범위는 이미지 형식에 따라 다릅니다. 예를 들어 "jpeg" 형식은 0(낮은 화질, 높은 압축)에서 100(높은 화질, 낮은 압축)까지의 품질 범위를 지원합니다.

quality()도 참조하세요 .

void QImageWriter::setSubType(const QByteArray &type)

이미지의 하위 유형을 type 로 설정하는 이미지 형식별 함수입니다. 하위 유형은 처리기에서 이미지를 저장할 때 사용할 형식을 결정하는 데 사용할 수 있습니다.

예를 들어 하위 유형이 A8R8G8R8인 DDS 형식으로 이미지를 저장합니다:

QImageWriter writer("some/image.dds");
if (writer.supportsOption(QImageIOHandler::SubType))
    writer.setSubType("A8R8G8B8");
writer.write(image);

subType()도 참조하세요 .

void QImageWriter::setText(const QString &key, const QString &text)

key 키와 연결된 이미지 텍스트를 text 으로 설정합니다. 이는 저작권 정보나 이미지에 대한 기타 정보를 저장할 때 유용합니다. 예:

QImage image("some/image.jpeg");
QImageWriter writer("images/outimage.png", "png");
writer.setText("Author", "John Smith");
writer.write(image);

단일 데이터 블록(예: 댓글)을 저장하려는 경우 빈 키를 전달하거나 "설명"과 같은 일반 키를 사용할 수 있습니다.

키와 텍스트는 write()를 호출한 후 이미지 데이터에 포함됩니다.

이 옵션에 대한 지원은 QImageIOHandler::Description 을 통해 구현됩니다.

QImage::setText() 및 QImageReader::text()도 참조하세요 .

void QImageWriter::setTransformation(QImageIOHandler::Transformations transform)

방향을 포함한 이미지 변환 메타데이터를 transform 로 설정합니다.

이미지 형식에서 변환 메타데이터를 지원하지 않는 경우 쓰기 전에 변환이 적용됩니다.

transformation() 및 write()도 참조하세요 .

QByteArray QImageWriter::subType() const

이미지의 하위 유형을 반환합니다.

setSubType()도 참조하세요 .

[static] QList<QByteArray> QImageWriter::supportedImageFormats()

QImageWriter 에서 지원하는 이미지 포맷의 목록을 반환합니다.

기본적으로 Qt는 다음 형식을 쓸 수 있습니다:

포맷MIME 타입설명
BMPimage/bmpWindows 비트맵
JPGimage/jpeg공동 사진 전문가 그룹
PNGimage/png휴대용 네트워크 그래픽
PBM이미지/x-포터블 비트맵휴대용 비트맵
PGM이미지/x-포터블-그레이맵휴대용 그레이맵
PPMimage/x-portable-pixmap휴대용 픽스맵
XBMimage/x-x-bitmapX11 비트맵
XPMimage/x-xpixmapX11 픽스맵

SVG 파일 읽기 및 쓰기는 Qt SVG 모듈을 통해 지원됩니다. 모듈은 Qt Image Formats 모듈은 추가 이미지 형식을 지원합니다.

이 함수를 호출하기 전에 QApplication 인스턴스를 만들어야 합니다.

setFormat(), QImageReader::supportedImageFormats() 및 QImageIOPlugin참조하세요 .

[static] QList<QByteArray> QImageWriter::supportedMimeTypes()

QImageWriter 에서 지원하는 MIME 유형 목록을 반환합니다.

이 함수를 호출하기 전에 QApplication 인스턴스를 생성해야 합니다.

supportedImageFormats() 및 QImageReader::supportedMimeTypes()도 참조하세요 .

QList<QByteArray> QImageWriter::supportedSubTypes() const

이미지가 지원하는 하위 유형 목록을 반환합니다.

bool QImageWriter::supportsOption(QImageIOHandler::ImageOption option) const

작성자가 option 을 지원하면 true 을 반환하고, 그렇지 않으면 false를 반환합니다.

이미지 포맷마다 지원하는 옵션이 다릅니다. 이 함수를 호출하여 현재 형식에서 특정 옵션이 지원되는지 여부를 확인합니다. 예를 들어 PNG 형식을 사용하면 이미지의 메타데이터에 텍스트를 삽입할 수 있습니다(text() 참조).

QImageWriter writer(fileName);
if (writer.supportsOption(QImageIOHandler::Description))
    writer.setText("Author", "John Smith");

작성기를 형식에 연결한 후에 옵션을 테스트할 수 있습니다.

QImageReader::supportsOption() 및 setFormat()도 참조하세요 .

QImageIOHandler::Transformations QImageWriter::transformation() const

이미지가 쓰도록 설정된 변환 및 방향을 반환합니다.

setTransformation()도 참조하세요 .

bool QImageWriter::write(const QImage &image)

지정된 장치 또는 파일 이름에 image 이미지를 씁니다. 성공하면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다. 작업이 실패하면 error()를 호출하여 발생한 오류의 유형을 찾거나 errorString()를 호출하여 사람이 읽을 수 있는 오류 설명을 얻을 수 있습니다.

canWrite(), error() 및 errorString()도 참조하세요 .

© 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.