이 페이지에서

QImageWriter Class

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

헤더: #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()를 호출하여 오류에 대한 이해하기 쉬운 설명을 얻을 수 있습니다.

QImageWriter가 쓸 수 있는 형식 목록을 확인하려면 ` supportedImageFormats()`을 호출하십시오. 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::UnsupportedFormatError2Qt는 요청된 이미지 형식을 지원하지 않습니다.
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())

fileName 라는 이름의 파일에 format 이미지 형식으로 데이터를 기록할 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

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

ImageWriterError 및 errorString()도 참조하십시오 .

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 의 값 범위는 이미지 형식에 따라 다릅니다:

이미지 형식지원되는 값
PNG0(압축 없음)부터 100(시각적 품질 저하, 최대 압축)까지의 범위 내 값입니다. 이 값은 setQuality 의 품질 값과 반비례합니다. 이 두 옵션은 서로 배타적입니다.
TGA0 - 압축 없음
1 - RLE 압축
TIFF0 - 압축 없음
1 - LZW 압축
2 - RLE 압축
3 - CCITT Group 3 팩스 인코딩
4 - CCITT Group 4 팩스 인코딩
5 - JPEG 압축

compression() 및 setQuality()도 참조하십시오 .

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 로 설정합니다. 내부적으로 QImageWriter 는 QFile 파일을 생성하여 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);

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

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/jpegJoint Photographic Experts Group
PNGimage/png휴대용 네트워크 그래픽
PBMimage/x-portable-bitmap이식형 비트맵
PGMimage/x-portable-graymap이식형 그레이맵
PPMimage/x-portable-pixmap이식형 픽스맵
XBMimage/x-xbitmapX11 비트맵
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()도 참조하십시오 .

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