Optimize Images for Graphics Performance (Compact 7)
3/12/2014
When you use more than 20 image files in a UI, or if you use image files that contain a large number of bits and have an exceptionally large file size, images can take longer to load on the display screen. A typical image file is considered exceptionally large if it is greater than 2 KB, while a big image file, such as a background image, is considered exceptionally large if it is greater than 150 KB. To help images load quickly, you can optimize them for graphics performance.
Modifying the File Type of Graphic Images to Optimize Load Time
Use Windows Bitmap (.bmp) images as bitmap source files in your Microsoft Silverlight for Windows Embedded UI, to help improve load time.
For an image of the same height and width dimensions, choosing a file type for the image is a tradeoff between graphics performance and memory use.
Uncompressed image file formats such as .bmp files require more memory; however, they load much faster and can help improve graphics performance. Compressed file formats such as .jpeg are more difficult to decode and take longer to load.
Table 2: Graphic Images and Graphics Performance
Image type | Graphic performance impact | Memory impact | OS design requirements |
---|---|---|---|
Joint Photographic Experts Group (JPEG) (*.jpg, *.jpeg files) |
Slowest to display at load time |
Requires less memory |
SYSGEN_IMAGING, SYSGEN_IMAGING_JPG_DECODE, SYSGEN_IMAGING_JPG_ENCODE |
Portable Network Graphic (PNG) (*.png files) |
Slow to display at load time |
Requires less memory |
SYSGEN_IMAGING, SYSGEN_IMAGING_PNG_DECODE, SYSGEN_IMAGING_PNG_ENCODE |
Windows Bitmap (*.bmp files |
Fastest to display at load time |
Requires more memory |
SYSGEN_IMAGING, SYSGEN_IMAGING_BMP_DECODE, SYSGEN_IMAGING_BMP_ENCODE |
Loading Images from Resource Binaries
Images with exceptionally large file sizes can require a lot of system memory and can impact graphics performance. Exceptionally large file sizes for typical image files are usually greater than 2 KB, and exceptionally large file sizes for big image files, such as background images, are usually greater than 150 KB. To optimize graphics performance for images that require a lot of memory, use IXRApplication::LoadImageFromResource instead of IXRApplication::LoadImageFromFile.
When you call IXRApplication::LoadImageFromResource, Silverlight for Windows Embedded loads graphic images from a binary resource file, such as a .dll file or .exe file, that you registered by calling IXRApplication::AddResourceModule.
If you want to call IXRApplication::LoadImageFromResource, prepare image resources for your application by first running XRPack at the command line and setting the ImageNoCompress option, as shown in the following example. This option converts an image to an uncompressed bitmap instead of a compressed bitmap. By using uncompressed bitmaps, you can reduce the time that would be required to parse a compressed bitmap to an uncompressed bitmap at run time.
C:\WINCE700\public\COMMON\oak\bin\i386>xrpack /AppXaml=MainPage.xaml /ImageNoCompress /ResFile=thumbnailCAMDMCM8.jpg
/TargetHeader=TestAppLocalizingImagesGenerated.h /TargetRes=TestAppLocalizingImages.rc
Microsoft (R) XRPack - XamlRuntime resource packaging utility version 7.00.437
Copyright (C) Microsoft Corporation. All rights reserved.
TargetHeader = C:\WINCE700\public\COMMON\oak\bin\i386\TestAppLocalizingImagesGenerated.h
TargetRes = C:\WINCE700\public\COMMON\oak\bin\i386\TestAppLocalizingImages.rc
Targets up to date.
For more information, see XAML Resource Packager.
See Also
Concepts
Graphics and Performance in Silverlight for Windows Embedded