Neues in WIC
Windows Imaging Component (WIC) wurde mit neuen Versionen von Windows aktualisiert. Dieses Thema bietet eine kurze Einführung in diese neuen Features.
Neuerungen in Windows 10 Version 1507
Zugriff auf JPEG-Daten auf niedriger Ebene für die WIC-Decodierung und -Codierung
Ab Windows 10 Version 1507 bietet WIC Zugriff auf JPEG-Datenstrukturen auf niedriger Ebene, einschließlich Huffman und Quantisierungstabellen. Weitere Informationen finden Sie in den folgenden Themen:
JPEG-Indizierung
Die JPEG-Indizierung ist ein Verfahren, das die Leistung des zufälligen Zugriffs auf kleine Teilbereiche eines großen JPEG-Bilds erheblich verbessert, und zwar auf Kosten einer zusätzlichen Speicherauslastung. Die JPEG-Indizierung kann von jedem Aufrufer von WIC genutzt werden.
Die ID2D1ImageSourceFromWic-Schnittstelle ist für die Nutzung der JPEG-Indizierung konzipiert, wenn sie aktiviert ist. Beispielsweise fordert die ID2D1ImageSource-API nur die erforderlichen Abschnitte des Bilds in einem Szenario an, z. B. schwenken und zoomen für ein Bild mit großer Auflösung. Weitere Informationen finden Sie in den folgenden Themen:
Neuerungen bei Windows 8.1
Unterstützung für JPEG YCbCr-Bilder
Ab Windows 8.1 bietet WIC Unterstützung für das Decodieren, Transformieren und Codieren von JPEG Y'CbCr-Bilddaten im nativen Format. Dadurch können Apps die Verarbeitungszeit und den Arbeitsspeicherverbrauch für bestimmte Bilderstellungsvorgänge erheblich verringern, wenn sie mit Y'CbCr-codierten JPEGs arbeiten. Weitere Informationen finden Sie in den folgenden Themen:
- Direct2DYCbCr-Effekt
- IWICPlanarBitmapSourceTransform-Schnittstelle
- IWICPlanarBitmapFrameEncode-Schnittstelle
Unterstützung für komprimierte Blockformate (DDS-Dateien)
Ab Windows 8.1 fügt WIC einen neuen Codec hinzu, der DDS-Bilder unterstützt, die in den folgenden Formaten codiert sind: DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_BC2_UNORM und DXGI_FORMAT_BC3_UNORM. Der Zugriff auf komprimierte DDS-Blockdaten kann in decodierter Form mithilfe von WIC-Standardschnittstellen oder direkt über neue DDS-spezifische Schnittstellen erfolgen. Weitere Informationen finden Sie in den folgenden Themen:
Neuerungen bei Windows 8
In Windows 8 wurde WIC mit mehreren neuen Features aktualisiert. Die aktualisierte Version von WIC ist auch unter Windows 7 und Windows Server 2008 R2 über das Plattformupdate für Windows 7 verfügbar, das über das Plattformupdate für Windows 7 verfügbar ist.
Verbesserte Direct2D-Integration
WIC in Windows 8 stellt die folgenden APIs bereit, um die Direct2D-Integration mit WIC zu verbessern:
- IWICImageEncoder : Eine neue Schnittstelle, die Direct2DID2D1Image-Inhalte in einen IWICBitmapFrameEncode codieren kann. Die Methoden dieser Schnittstelle verwenden einen Zeiger auf WICImageParameters, bei denen es sich um Parameter zum Steuern der Codierung handelt.
- IWICImagingFactory2 : Neue WIC-Factory mit der CreateImageEncoder-Methode . Diese Schnittstelle erbt von der ursprünglichen WIC-Factory IWICImagingFactory und wird auf die gleiche Weise erstellt.
Änderungen an der Alphaunterstützung für BMP-Codecs
WIC in Windows 8 unterstützt das Laden von BITMAPV5HEADER-Bilddateien als BILDER im WICPixelFormat32bppBGRA-Format. Darüber hinaus unterstützt der BMP-Encoder eine neue boolesche Encoderoption "EnableV5Header32bppBGRA", die den Encoder anweist, einen BITMAPV5HEADER mit den 32bBGRA-Bilddaten zu schreiben.
Weitere Informationen zu BMP-Formaten finden Sie unter Übersicht über das BMP-Format.
Neue Pixelformate
WIC in Windows 8 definiert diese neuen Pixelformate:
- GUID_WICPixelFormat32bppRGB
- GUID_WICPixelFormat64bppRGB
- GUID_WICPixelFormat96bppRGBFloat
- GUID_WICPixelFormat64bppPRGBAHalf
Hinweis
Der integrierte TIFF-Codec gibt GUID_WICPixelFormat96bppRGBFloat Daten zurück. Die anderen drei Formate werden von integrierten Codecs nicht verwendet.
Einschränkungen der Erweiterbarkeit von Komponenten in AppContainer
Bei der Ausführung in einem AppContainer-Prozess, der alle Windows Store-Apps umfasst, verwendet WIC nur von Windows bereitgestellte Komponenten, unabhängig davon, ob zusätzliche Komponenten auf dem System installiert sind. Apps, die nicht in AppContainer ausgeführt werden, sind nicht betroffen.
Apps müssen keine Codeänderungen vornehmen, um in einem AppContainger ausgeführt zu werden, aber das WICComponentEnumerateOptions-Flag und die GUID-Parameter des Anbieters haben keine Auswirkungen. WIC kann ein Image nicht laden, wenn es nicht von einem von Windows bereitgestellten Codec decodiert werden kann, und der Aufruf der CreateComponentEnumerator-Methode gibt nur von Windows bereitgestellte Komponenten zurück.
Änderungen an CLSID_WICPngDecoder- und PNG-Decoderfarbkontextunterstützung
CLSID_WICPngDecoder1 wurde mit derselben GUID wie CLSID_WICPngDecoder hinzugefügt, und CLSID_WICPngDecoder2 wurde hinzugefügt.
Bei der Kompilierung mit dem Windows 8 SDK wird CLSID_WICPngDecoder #defined, um neu kompilierte Apps mithilfe des neuen PNG-Decoderverhaltens zu CLSID_WICPngDecoder2. Apps sollten weiterhin CLSID_WICPngDecoder angeben.
Wenn Sie CLSID_WICPngDecoder2 angeben, wird eine Version des WIC PNG-Decoders erstellt, die einen IWICColorContext aus cHRM- und gAMA-Blöcken generiert. Dadurch können diese Farbraummetadaten mit anderen Windows-APIs für die Farbverwaltung des Quellbilds verwendet werden. Ein IWICColorContext wird nicht aus den gAMA- und cHRM-Blöcken generiert, wenn ein iCCP-Block vorhanden ist, wenn ein sRGB-Block vorhanden ist oder wenn die gAMA- und cHRM-Blöcke einen sRGB-Farbraum angeben.
Eine App kann CLSID_WICPngDecoder1 angeben, um eine Version des WIC PNG-Decoders zu erstellen, der keinen IWICColorContext aus den gAMA- und cHRM-Blöcken generiert. Dies entspricht dem Verhalten des PNG-Decoders in früheren Versionen von Windows.
Änderungen an WINCODEC_SDK_VERSION
Bei der Kompilierung mit dem Windows 8 SDK wird WINCODEC_SDK_VERSION #defined, um neu kompilierte Apps mithilfe des neuen PNG-Decoderverhaltens zu WINCODEC_SDK_VERSION2. Andernfalls ist es #defined, WINCODEC_SDK_VERSION1. Apps sollten weiterhin WINCODEC_SDK_VERSION angeben.
Die Angabe WINCODEC_SDK_VERSION beim Aufrufen WICCreateImagingFactory_Proxy zum Erstellen der Imaging Factory bewirkt, dass CLSID_WICPngDecoder2 erstellt wird, anstatt aus der CreateDecoder-Methode und ihren Varianten CLSID_WICPngDecoder1. Außerdem gibt ein Decoderkomponenten-Info-Enumerator CLSID_WICPngDecoder2 Komponenteninformationen zurück, aber nicht CLSID_WICPngDecoder1 Informationen.
Wenn Sie WINCODEC_SDK_VERSION1 angeben, werden in den obigen Fällen CLSID_WICPngDecoder1 anstelle von CLSID_WICPngDecoder2 verwendet.
Änderungen an CLSID_WICImagingFactory
CLSID_WICImagingFactory1 wurde mit derselben GUID wie CLSID_WICImagingFactory hinzugefügt, und CLSID_WICImagingFactory2 wurde hinzugefügt.
Bei der Kompilierung mit dem Windows 8 SDK wird CLSID_WICImagingFactory #defined, um neu kompilierte Apps mithilfe des neuen PNG-Decoderverhaltens zu CLSID_WICImagingFactory2. Apps sollten weiterhin CLSID_WICImagingFactory angeben.
Die Angabe CLSID_WICImagingFactory2 beim Aufrufen von CoCreateInstance zum Erstellen der Imaging Factory führt dazu, dass CLSID_WICPngDecoder2 erstellt werden, anstatt aus der CreateDecoder-Methode und ihren Varianten CLSID_WICPngDecoder1. Außerdem gibt ein Decoderkomponenten-Info-Enumerator CLSID_WICPngDecoder2 Komponenteninformationen zurück, aber nicht CLSID_WICPngDecoder1 Informationen.
Wenn Sie CLSID_WICImagingFactory1 angeben, werden in den obigen Fällen CLSID_WICPngDecoder1 anstelle von CLSID_WICPngDecoder2 verwendet.
Neuerungen in Windows 7
In Windows 7 wurde WIC mit mehreren neuen Features aktualisiert. Dieses Thema bietet eine kurze Einführung in diese neuen Features.
Updates zum TIFF-Codec
Der WIC TIFF-Codec wurde für Windows 7 aktualisiert, um mehrere Features zu unterstützen, die von der vorherigen Version von WIC nicht unterstützt werden.
- Unterstützung für große TIFF-Dateien.
- Decodiert kachelte TIFF-Bilder.
- Decodieren Sie flache (planare) TIFF-Bilder.
- Decodieren Sie JPEG-codierte TIFF-Bilder.
Progressive Decodierung
Die progressive Decodierung bietet die Möglichkeit, Teile eines Bilds inkrementell zu decodieren und zu rendern, bevor das gesamte Bild heruntergeladen wurde. Dieses Feature verbessert die Benutzerfreundlichkeit beim Anzeigen von Bildern aus dem Internet erheblich, da der Benutzer nicht warten muss, bis das gesamte Bild heruntergeladen wird, bevor die Decodierung beginnen kann. Mit der progressiven Decodierung können Benutzer eine Bildvorschau mit verfügbaren Daten sehen, lange bevor das gesamte Image heruntergeladen wird. Dieses Feature ist für alle Anwendungen unerlässlich, die zum Anzeigen von Bildern aus dem Internet oder aus Datenquellen mit begrenzter Bandbreite verwendet werden.
Weitere Informationen finden Sie in der Übersicht über die progressive Decodierung.
Erweiterte Metadatenunterstützung für JPEG, PNG und GIF
In Windows 7 hat WIC die Metadatenunterstützung für JPEG-, PNG- und GIF-Bilder erweitert.
- Unterstützung für animierte GIF- und GIF-Eigenschaften hinzugefügt.
- Erweiterte JPG-Metadatenhandler zur Unterstützung von Chrominanz-, Luminance- und Kommentarmetadaten.
- Erweiterte PNG-Metadatenhandler zur Unterstützung von tIME-, sRGB-, iCCP-, hIST-, cHRM-, iTXt-, bKGD- und gAMA-Metadaten.
- Neue 8BIM-Metadatenhandler für ResolutionInfo-Metadaten und IPTC-Digestmetadaten hinzugefügt.
- Neue Metadatenhandler für LSD (Logical Screen Descriptor), Image Descriptor (IMD), Graphic Control Extensions (GCE) und Anwendungserweiterungen (Application Extensions, APE) wurden hinzugefügt.
- Unterstützung für Metadaten, die APPn-Blöcke umfassen.
MultiThread-Apartmentunterstützung
Objekte in einem Multithread-Apartment (MTA) können gleichzeitig von einer beliebigen Anzahl von Threads innerhalb des MTA aufgerufen werden, was eine bessere Leistung auf Multicore-Systemen und bestimmten Serverszenarien ermöglicht. Darüber hinaus können WIC-Codecs, die in einem MTA leben, andere Objekte aufrufen, die innerhalb des MTA leben, ohne die Marshallingkosten für das Aufrufen von Threads, die sich in verschiedenen STA-Apartments befinden. In Windows 7 wurden alle im Lieferumfang integrierten WIC-Codecs aktualisiert, um MTA zu unterstützen, einschließlich JPEG, TIFF, PNG, GIF, ICO und BMP. Es wird dringend empfohlen, Codecs zur Unterstützung von MTA zu schreiben. Codecs, die MTA nicht unterstützen, führen aufgrund von Marshalling zu einer erheblichen Leistungseinbuße in Multithreadanwendungen. Zum Aktivieren der MTA-Unterstützung muss eine ordnungsgemäße Synchronisierung im Codec implementiert werden. Die genaue Implementierung dieser Synchronisierungstechniken geht über den Rahmen dieses Dokuments hinaus. Unten finden Sie eine allgemeine Referenz zum Synchronisieren von COM-Objekten (Component Object Model).
Implementierungen von Metadatenarbeitsgruppen
Es gibt derzeit eine Vielzahl von Metadatenspeicherformaten, die überlappende Eigenschaften enthalten, ohne einen klaren Industriestandard oder Anleitungen zu konsistenten Methoden zum Lesen und Schreiben dieser Metadatenformate. Um diese Vielfalt von Formaten und Eigenschaften zu unterstützen, wurde die Metadaten-Arbeitsgruppe (MWG) gegründet. Ziel der MWG ist es, Richtlinien bereitzustellen, die die Interoperabilität zwischen den unterschiedlichsten Plattformen, Anwendungen und Geräten gewährleisten. Die von der MWG festgelegten Richtlinien gelten für die Metadatenfelder XMP, Exif und IPTC sowie für die Bildformate JPEG, TIFF und PSD.
In Windows 7 wurden der Fotometadatenhandler und die Metadatenrichtlinienebene aktualisiert, um Bildmetadaten gemäß den richtlinien der MWG zu lesen und zu schreiben. Weitere Informationen zur Metadata Working Group (MWG) findest du in den etablierten Metadatenrichtlinien.
Windows 7-Features, die unter Windows Vista und Windows Server 2008 unterstützt werden
Das Plattformupdate für Windows Vista ist eine Reihe von Laufzeitbibliotheken, mit denen Entwickler Anwendungen auf Windows 7 und Windows Vista ausrichten können. Das Plattformupdate für Windows Server 2008 ist eine Reihe von Laufzeitbibliotheken, mit denen Entwickler Anwendungen auf Windows Server 2008 R2 und Windows Server 2008 ausrichten können. Das Plattformupdate für Windows Vista und das Plattformupdate für Windows Server 2008 stehen allen Windows Vista- und Windows Server 2008-Kunden über Windows Update zur Verfügung. Drittanbieteranwendungen, die ein Plattformupdate für Windows Vista oder Plattformupdate für Windows Server 2008 erfordern, können Windows Update erkennen, ob die erforderliche Aktualisierung installiert ist. Andernfalls lädt Windows Update es im Hintergrund herunter und installiert es. Weitere Informationen zu beiden Updates finden Sie unter Plattformupdate für Windows Vista.