Image QML Type
이미지를 표시합니다. 더 보기...
Import Statement: | import QtQuick |
Inherits: | |
Inherited By: |
속성
- asynchronous : bool
- autoTransform : bool
- cache : bool
- currentFrame : int
- fillMode : enumeration
- frameCount : int
- horizontalAlignment : enumeration
- mipmap : bool
- mirror : bool
- mirrorVertically : bool
(since 6.2)
- paintedHeight : real
- paintedWidth : real
- progress : real
- retainWhileLoading : bool
(since 6.8)
- smooth : bool
- source : url
- sourceClipRect : rect
- sourceSize : size
- status : enumeration
- verticalAlignment : enumeration
상세 설명
이미지 유형은 이미지를 표시합니다.
이미지의 소스는 source 속성을 사용하여 URL로 지정합니다. 이미지는 PNG, JPEG와 같은 비트맵 형식과 SVG와 같은 벡터 그래픽 형식을 포함하여 Qt에서 지원하는 모든 표준 이미지 형식으로 제공될 수 있습니다. 애니메이션 이미지를 표시해야 하는 경우 AnimatedSprite 또는 AnimatedImage 을 사용합니다.
width 및 height 속성을 지정하지 않으면 이미지가 로드된 이미지의 크기를 자동으로 사용합니다. 기본적으로 항목의 너비와 높이를 지정하면 이미지의 크기가 해당 크기로 조정됩니다. fillMode 속성을 설정하면 이 동작을 변경하여 이미지를 늘리거나 타일링할 수 있습니다.
"@nx" high DPI syntax 을 제공할 수 있습니다.
사용 예
다음 예는 이미지 유형의 가장 간단한 사용법을 보여줍니다.
import QtQuick Image { source: "pics/qtlogo.png" }
압축 텍스처 파일
런타임에 기본 그래픽 API 구현에서 지원하는 경우 이미지를 압축된 텍스처 파일로도 제공할 수 있습니다. 콘텐츠는 단순한 RGB(A) 형식의 2D 텍스처여야 합니다. 지원되는 압축 체계는 기본 드라이버와 GPU에 의해서만 제한됩니다. 지원되는 컨테이너 파일 형식은 다음과 같습니다:
PKM
(Qt 5.10 이후)KTX
(Qt 5.11 이후)ASTC
(Qt 5.13 이후)
참고: 텍스처 파일에서 이미지의 의도된 세로 방향은 일반적으로 잘 정의되어 있지 않습니다. 텍스처 압축 도구마다 입력 이미지의 수직 뒤집기를 수행할 기본값과 옵션이 다릅니다. 텍스처 파일의 이미지가 거꾸로 표시되는 경우 에셋 컨디셔닝 프로세스에서 뒤집기를 전환해야 할 수 있습니다. 또는 변형 속성을 통해 적절한 변형을 적용하거나 mirrorVertically 속성을 설정하여 이미지 요소 자체를 뒤집을 수 있습니다:
transform: [ Translate { y: -myImage.height }, Scale { yScale: -1 } ]
또는
mirrorVertically: true
참고: 반투명 원본 이미지를 Qt Quick 에 올바르게 표시하려면 텍스처 압축 전에 알파 사전 곱셈이 필요합니다. 이 작업은 다음 ImageMagick 명령줄을 사용하여 수행할 수 있습니다:
convert foo.png \( +clone -alpha Extract \) -channel RGB -compose Multiply -composite foo_pm.png
KTX
과 같은 컨테이너 형식과 컨테이너 파일에 저장된 실제 텍스처 데이터의 형식을 혼동하지 마세요. 예를 들어 KTX
파일 읽기는 런타임에 사용되는 GPU 드라이버와 관계없이 모든 플랫폼에서 지원됩니다. 하지만 파일 내 데이터에 사용되는 압축 텍스처 형식이 런타임에 지원된다는 보장은 없습니다. 예를 들어 KTX 파일에 ETC2 RGBA8
형식의 압축 데이터가 포함되어 있고 런타임에 사용되는 3D 그래픽 API 구현이 ETC2
압축 텍스처를 지원하지 않는 경우 이미지 항목에 아무것도 표시되지 않습니다.
참고: 압축 텍스처 포맷 지원은 Qt가 제어할 수 없으며, 압축 텍스처 데이터가 대상 환경에 적합한 포맷으로 제공되도록 하는 것은 애플리케이션 또는 디바이스 개발자의 책임입니다.
압축 포맷 지원이 특정 플랫폼에만 국한된다고 가정하지 마세요. 특정 플랫폼에서 사용 중인 드라이버 및 3D API 구현에 따라 다를 수 있습니다. 실제로 동일한 하드웨어에 대해 동일한 공급업체의 동일한 플랫폼(예: Windows)에서 서로 다른 3D 그래픽 API(예: Vulkan 및 OpenGL)를 구현하는 경우 서로 다른 압축 텍스처 포맷 세트를 제공할 수 있습니다.
데스크톱 환경(Windows, macOS, Linux)만 타겟팅하는 경우, 일반적으로 이러한 플랫폼에서 Direct 3D, Vulkan, OpenGL, Metal을 구현하는 것 중 가장 폭넓게 지원되므로 DXTn
/BCn
포맷 사용을 고려할 것을 권장합니다. 반대로 모바일 또는 임베디드 디바이스를 대상으로 하는 경우에는 ETC2
또는 ASTC
형식이 일반적으로 해당 하드웨어의 OpenGL ES 구현에서 지원되는 형식이므로 더 나은 선택이 될 수 있습니다.
데스크톱, 모바일 및 임베디드 하드웨어에서 실행하려는 애플리케이션은 압축 텍스처 사용을 신중하게 계획하고 설계해야 합니다. 단일 포맷에 의존하는 것만으로는 충분하지 않을 가능성이 높으므로 애플리케이션은 플랫폼에 따라 적절한 포맷의 압축 텍스처를 사용하거나 경우에 따라 압축 텍스처 사용을 생략할 수 있도록 분기해야 할 수도 있습니다.
파일 확장자 자동 감지
source URL이 존재하지 않는 로컬 파일이나 리소스를 가리키는 경우 이미지 요소는 파일 확장자를 자동으로 감지하려고 시도합니다. source URL에 지원되는 이미지 파일 확장자 중 하나를 추가하여 기존 파일을 찾을 수 있는 경우 해당 파일이 로드됩니다.
파일 검색은 압축된 텍스처 컨테이너 파일 확장자를 먼저 찾으려고 시도합니다. 검색에 실패하면 conventional image file types 의 파일 확장자로 검색을 시도합니다(예: ):
// Assuming the "pics" directory contains the following files: // dog.jpg // cat.png // cat.pkm Image { source: "pics/cat.png" // loads cat.png } Image { source: "pics/dog" // loads dog.jpg } Image { source: "pics/cat" // normally loads cat.pkm, but if no OpenGL, loads cat.png instead. }
이 기능을 사용하면 다양한 대상 플랫폼에 다양한 이미지 에셋 파일 유형을 쉽게 배포할 수 있습니다. 애플리케이션 성능을 조정하고 다양한 그래픽 하드웨어에 맞게 조정하는 데 유용할 수 있습니다.
이 기능은 Qt 5.11에 도입되었습니다.
성능
기본적으로 로컬에서 사용 가능한 이미지는 즉시 로드되며 로드가 완료될 때까지 사용자 인터페이스가 차단됩니다. 큰 이미지를 로드해야 하는 경우 asynchronous 속성을 활성화하여 우선순위가 낮은 스레드에서 이미지를 로드하는 것이 바람직할 수 있습니다.
로컬 리소스가 아닌 네트워크에서 이미지를 가져오는 경우에는 자동으로 비동기식으로 로드되며 progress 및 status 속성이 적절하게 업데이트됩니다.
이미지는 내부적으로 캐시되고 공유되므로 여러 이미지 항목에 동일한 source 이 있는 경우 이미지의 복사본 하나만 로드됩니다.
참고: 이미지는 QML 사용자 인터페이스에서 메모리를 가장 많이 사용하는 경우가 많습니다. 사용자 인터페이스의 일부를 구성하지 않는 이미지는 sourceSize 속성을 통해 크기를 제한하는 것이 좋습니다. 이는 외부 소스에서 로드되거나 사용자가 제공하는 콘텐츠의 경우 특히 중요합니다.
Qt Quick 예제 - 이미지 요소, QQuickImageProvider, 및 QImageReader::setAutoDetectImageFormat()도 참조하세요 .
속성 문서
이러한 속성은 실제로 그려지는 이미지의 크기를 유지합니다. 대부분의 경우 width
및 height
과 동일하지만 Image.PreserveAspectFit 또는 Image.PreserveAspectCrop paintedWidth
또는 paintedHeight
을 사용하는 경우 이미지 항목의 width
및 height
보다 작거나 클 수 있습니다.
horizontalAlignment : enumeration |
verticalAlignment : enumeration |
이미지의 가로 및 세로 정렬을 설정합니다. 기본적으로 이미지는 가운데 정렬됩니다.
horizontalAlignment
의 유효한 값은 Image.AlignLeft
, Image.AlignRight
및 Image.AlignHCenter
입니다. verticalAlignment
의 유효한 값은 Image.AlignTop
, Image.AlignBottom
및 Image.AlignVCenter
입니다.
currentFrame 는 현재 표시되는 프레임입니다. 기본값은 0
입니다. 이미지에 여러 프레임이 포함된 경우 0
과 frameCount - 1
사이의 숫자로 설정하여 다른 프레임을 표시할 수 있습니다.
frameCount 는 이미지의 프레임 수입니다. 대부분의 이미지에는 프레임이 하나만 있습니다.
asynchronous : bool |
로컬 파일시스템의 이미지를 별도의 스레드에서 비동기적으로 로드하도록 지정합니다. 기본값은 false이므로 이미지가 로드되는 동안 사용자 인터페이스 스레드가 차단됩니다. asynchronous 을 참으로 설정하면 이미지를 즉시 표시하는 것보다 반응형 사용자 인터페이스를 유지하는 것이 더 바람직한 경우에 유용합니다.
이 속성은 로컬 파일 시스템에서 읽은 이미지에만 유효합니다. 네트워크 리소스(예: HTTP)를 통해 로드된 이미지는 항상 비동기적으로 로드됩니다.
autoTransform : bool |
이 속성에는 이미지에 EXIF 방향과 같은 이미지 변환 메타데이터를 자동으로 적용할지 여부가 포함됩니다.
기본적으로 이 속성은 false로 설정되어 있습니다.
cache : bool |
이미지를 캐시할지 여부를 지정합니다. 기본값은 true입니다. cache 을 false로 설정하면 큰 이미지를 처리할 때 작은 'UI 요소' 이미지를 희생시키면서 캐시되지 않도록 하는 데 유용합니다.
fillMode : enumeration |
이 속성을 설정하면 소스 이미지의 크기가 항목과 다른 경우 발생하는 상황을 정의할 수 있습니다.
Constant | 설명 |
---|---|
Image.Stretch | 이미지가 항목에 맞게 크기가 조정됩니다. |
Image.PreserveAspectFit | 이미지의 크기가 잘리지 않고 균일하게 조정됩니다. |
Image.PreserveAspectCrop | 이미지의 크기를 균일하게 조정하여 채우고 필요한 경우 자릅니다. |
Image.Tile | 이미지가 가로 및 세로로 복제됩니다. |
Image.TileVertically | 이미지가 가로로 늘어나고 세로로 타일링됩니다. |
Image.TileHorizontally | 이미지가 세로로 늘어나고 가로로 타일링됩니다. |
Image.Pad | 이미지가 변형되지 않음 |
늘이기(기본값)Image { width: 130; height: 100 source: "qtlogo.png" } | |
PreserveAspectFitImage { width: 130; height: 100 fillMode: Image.PreserveAspectFit source: "qtlogo.png" } | |
PreserveAspectCropImage { width: 130; height: 100 fillMode: Image.PreserveAspectCrop source: "qtlogo.png" clip: true } | |
TileImage { width: 120; height: 120 fillMode: Image.Tile horizontalAlignment: Image.AlignLeft verticalAlignment: Image.AlignTop source: "qtlogo.png" } | |
TileVerticallyImage { width: 120; height: 120 fillMode: Image.TileVertically verticalAlignment: Image.AlignTop source: "qtlogo.png" } | |
Tile가로Image { width: 120; height: 120 fillMode: Image.TileHorizontally verticalAlignment: Image.AlignLeft source: "qtlogo.png" } |
clip
는 기본적으로 false
이므로 fillMode가 PreserveAspectCrop
로 설정되어 있어도 항목이 경계 사각형 외부로 칠할 수 있습니다.
Qt Quick 예제 - 이미지 요소도참조하세요 .
mipmap : bool |
이 속성은 이미지가 크기 조정 또는 변형될 때 밉맵 필터링을 사용할지 여부를 보유합니다.
밉맵 필터링은 부드럽게 축소할 때보다 시각적 품질을 향상시키지만, 이미지를 초기화할 때와 렌더링할 때 모두 성능 저하가 발생할 수 있습니다.
기본적으로 이 속성은 false로 설정되어 있습니다.
smooth 를참조하세요 .
mirror : bool |
이 속성은 이미지를 가로로 반전할지(효과적으로 미러링된 이미지를 표시할지) 여부를 결정합니다.
기본값은 false입니다.
mirrorVertically : bool |
이 속성은 이미지를 세로로 반전할지(미러링된 이미지를 효과적으로 표시할지) 여부를 저장합니다.
기본값은 false입니다.
이 프로퍼티는 Qt 6.2에 도입되었습니다.
retainWhileLoading : bool |
이 속성은 source 속성이 변경되어 로딩이 비동기적으로 수행될 때의 동작을 정의합니다. asynchronous 속성이 true
으로 설정되어 있거나 이미지가 로컬 파일 시스템에 없는 경우에 해당합니다.
retainWhileLoading
가 false
(기본값)인 경우 이전 이미지는 즉시 삭제되고 새 이미지가 로드되는 동안 컴포넌트가 지워집니다. true
로 설정하면 이전 이미지가 유지되며 새 이미지가 준비될 때까지 계속 표시됩니다.
이 속성을 활성화하면 새 이미지를 로드하는 데 시간이 오래 걸리는 경우 깜박임을 방지할 수 있습니다. 새 이미지가 로드되는 동안 이중 버퍼링을 위해 메모리를 추가로 사용하는 대가가 따릅니다.
이 프로퍼티는 Qt 6.8에 도입되었습니다.
smooth : bool |
이 속성은 이미지 크기 조정 또는 변형 시 이미지가 부드럽게 필터링되는지 여부를 유지합니다. 부드럽게 필터링하면 시각적 품질이 향상되지만 일부 하드웨어에서는 속도가 느려질 수 있습니다. 이미지가 자연스러운 크기로 표시되는 경우 이 속성은 시각적 또는 성능에 영향을 미치지 않습니다.
기본적으로 이 속성은 true로 설정되어 있습니다.
mipmap 를참조하세요 .
source : url |
Image는 Qt에서 지원하는 모든 이미지 형식을 처리할 수 있으며, Qt에서 지원하는 모든 URL 체계에서 로드할 수 있습니다.
URL은 절대적이거나 컴포넌트의 URL에 상대적일 수 있습니다.
QQuickImageProvider, Compressed Texture Files, Automatic Detection of File Extension 를참조하십시오 .
sourceClipRect : rect |
이 속성을 설정하면 로드할 소스 이미지의 직사각형 영역을 보유합니다.
sourceClipRect
는 이미지의 일부만 로드해야 하는 경우 sourceSize 속성과 함께 작동하여 시스템 리소스를 절약합니다.
Rectangle { width: ... height: ... Image { anchors.fill: parent source: "reallyBigImage.svg" sourceSize.width: 1024 sourceSize.height: 1024 sourceClipRect: Qt.rect(100, 100, 512, 512) } }
위의 예에서는 먼저 SVG 그래픽의 크기를 1024x1024로 조정한 다음, 상단과 왼쪽 가장자리에서 100픽셀 떨어진 위치에서 512x512픽셀의 관심 영역을 잘라냅니다. 따라서 sourceSize
이 배율을 결정하지만 실제 출력 이미지는 512x512픽셀입니다.
일부 이미지 형식은 지정된 영역만 렌더링하여 CPU 시간을 절약할 수 있습니다. 다른 형식은 전체 이미지를 먼저 로드한 다음 지정된 영역으로 클립해야 합니다.
sourceClipRect
을 undefined
으로 설정하여 전체 이미지를 다시 로드하도록 이 속성을 지울 수 있습니다.
참고: 이 속성을 변경하면 이미지 소스가 디스크 캐시에 없는 경우 네트워크에서도 이미지 소스를 동적으로 다시 로드할 수 있습니다.
참고: 하위 픽셀 클리핑은 지원되지 않습니다. 지정된 사각형은 QImageReader::setScaledClipRect()로 전달됩니다.
sourceSize : size |
이 속성은 풀프레임 이미지의 크기 조정된 너비와 높이를 보유합니다.
이미지의 그림 크기를 조정하는 width 및 height 속성과 달리 이 속성은 로드된 이미지에 대해 저장되는 최대 픽셀 수를 설정하여 큰 이미지가 필요 이상으로 많은 메모리를 사용하지 않도록 합니다. 예를 들어 이미지의 width 및 height 값에 관계없이 메모리에 저장되는 이미지가 1024x1024 픽셀보다 크지 않도록 합니다:
Rectangle { width: ... height: ... Image { anchors.fill: parent source: "reallyBigImage.jpg" sourceSize.width: 1024 sourceSize.height: 1024 } }
이미지의 실제 크기가 sourceSize보다 크면 이미지가 축소됩니다. 크기의 한 치수만 0보다 크게 설정된 경우 소스 이미지의 가로 세로 비율을 유지하기 위해 다른 치수가 비례하여 설정됩니다. ( fillMode 는 이와 무관합니다.)
sourceSize.width와 sourceSize.height를 모두 설정하면 이미지의 가로 세로 비율을 유지하면서 지정된 크기에 맞게 이미지가 축소됩니다(PreserveAspectCrop 또는 PreserveAspectFit을 사용하지 않는 경우 자르기/맞추기를 위한 최적 크기에 맞게 조정됨). 크기 조정 후 이미지의 실제 크기는 Item::implicitWidth 및 Item::implicitHeight 에서 확인할 수 있습니다.
소스가 본질적으로 크기 조정이 가능한 이미지(예: SVG)인 경우 이 속성은 본질적인 크기와 관계없이 로드된 이미지의 크기를 결정합니다. 이 속성을 동적으로 변경하면 이미지에 비해 SVG 렌더링 속도가 느려지므로 변경하지 마세요.
소스가 확장 불가능한 이미지(예: JPEG)인 경우 로드된 이미지는 이 속성이 지정한 크기보다 크지 않습니다. 일부 형식(현재 JPEG만 해당)의 경우 전체 이미지가 실제로 메모리에 로드되지 않습니다.
sourceClipRect 속성도 설정되어 있으면 sourceSize
이 배율을 결정하지만 클립 사각형의 크기로 잘립니다.
sourceSize를 undefined
로 설정하여 이미지의 자연스러운 크기로 지울 수 있습니다.
참고: 이 속성을 동적으로 변경하면 이미지 소스가 디스크 캐시에 없는 경우 네트워크에서도 이미지 소스가 다시 로드될 수 있습니다.
Qt Quick 예제 - 포인터 핸들러를참조하세요 .
status : enumeration |
이 속성은 이미지 로딩 상태를 보유합니다. 다음 중 하나가 될 수 있습니다:
상수 | 설명 |
---|---|
Image.Null | 이미지가 설정되지 않았습니다. |
Image.Ready | 이미지가 로드되었습니다. |
Image.Loading | 이미지가 현재 로드 중입니다. |
Image.Error | 이미지를 로드하는 동안 오류가 발생했습니다. |
이 상태를 사용하여 업데이트를 제공하거나 어떤 식으로든 상태 변경에 응답하세요. 예를 들면 다음과 같습니다:
- 상태 변경을 트리거합니다:
State { name: 'loaded'; when: image.status == Image.Ready }
onStatusChanged
시그널 핸들러를 구현합니다:Image { id: image onStatusChanged: if (image.status == Image.Ready) console.log('Loaded') }
- 상태 값에 바인딩합니다:
Text { text: image.status == Image.Ready ? 'Loaded' : 'Not loaded' }
progress 를참조하세요 .
© 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.