Find Jobs
Hire Freelancers

Create Windows Shell Extension Thumbnail Handler

$100-400 USD

In Progress
Posted over 12 years ago

$100-400 USD

Paid on delivery
Create a Windows Explorer Shell Extension Thumbnail Handler for a given graphical file format. The specifications for the file type will be provided with instructions about how to access the graphical information within the file as well as example files to test. The shell extension should work in 32-bit and 64-bit versions of Windows XP, Windows Vista, and Windows 7. ## Deliverables The graphic file format contains a data block which stores a thumbnail image of the image stored in the file, so the entire file does not have to be read. The image data in the thumbnail is stored in either 8-bit indexed-color or 24-bit true-color modes and a data block in the file will specify the bit depth. If the file contains an 8-bit indexed-color image, a data block in the file will contain a color palette of 256 entries. The indexed-color image is stored run-length encoded and the true-color image is stored in BGR byte order. The pixels of the image have an aspect-ratio. A data block will give the resolution in the X and the resolution in the Y of the image as pixels per unit. If the aspect ratio is not square, the thumbnail image created will have to be interpolated using Supersampling to display an image with the correct aspect ratio. The file can be either compressed or uncompressed. A data block at the beginning of the file will determine if compression if used. If the file is compressed, the next data block will contain a Zip compressed version of the uncompressed file. The file consists of data blocks stored in Little Endian encoding. The first 12 bytes of the block are a header that describe the block and give an offset to the end of the block. The first 4 bytes of the header are ASCII characters that name the block. The next 4 bytes are flags. If the first byte flag if a 1, then data follows the header. If the first flag is 0, nested blocks follow the header. The last 4 bytes in the header are an unsigned integer offset, in bytes, to the end of the block. The first block in the file is the NIFF block; it specifies if the file is compressed or uncompressed. If the data in the block is ZNIF, the file is compressed. If the data is DSGN, the file is uncompressed. If the file is compressed, the second block in the file will be the ZNIF block; It contains 2 blocks. The second nested block is the ZCHK block. It contains Zip compressed data of the uncompressed version of the file. The second data block in the uncompressed file is the STMP block. It stored a thumbnail of the image in the file that will be used by the shell extension. The first block inside of the STMP block is the CDIB block that contains the image data of the thumbnail. The first block inside if the CDIB block is the DHDR block which contains header information for the thumbnail. The data in the DHDR block is as follows. The first 4 bytes are the width of the thumbnail image in pixels. The next 4 bytes are the height of the thumbnail image in pixels. The next 2 bytes are the bit-depth of the image, 8 for indexed-color and 24 for true-color. The next 4 blocks are the resolution of the image in X, and the last 4 bytes are the resolution of the image in Y. The resolution of the image is the number of pixels per square unit and will be used to determine the pixel-aspect-ratio of the image. When creating the image for the thumbnail, if the image is not in square aspect-ratio, the resulting thumbnail will have to either be scaled down alond one of the axes using Supersampling, or scaled up along the other axis using linear interpolation to produce an image that is visually correct. The next data block inside of the CDIB block, if the image is 8-bit indexed-color, is the DPAL block that contains the palette for the image. The first 4 bytes are flags followed by 256 4-byte records containing bytes for the color values blue, green, then red. The last byte in the record is 0. If the image is 24-bit true-color, the DPAL block will be missing. The next block in the CDIB block is the DDAT block that contains the image data. The DDAT block begins with 4 bytes of flags and contains the image data for either the 8-bit indexed color pixels, or the 24-bit true-color pixels. The pixels are stores in rows which are read from left to right, and the rows are read from the bottom up. Each row is padded to be divisible by 4 bytes, so if the image is 13 pixels wide, in indexed-color it would be 16 bytes in stride, and in true-color would be 40 bytes in stride. If the image is 24-bit true-color, the pixels are stored as 3 bytes in BGR order. If the image is 8-bit indexed-color, the pixels are stored in run-length-encoded blocks. Each block begins with an 8 byte header of which the first 4 are the length of the block in bytes and the second 4 are the number of bytes in the uncompressed block. After the header, each block contains the bytes of the color indexes, or run-length-encoded sections that begin with FF followed by the length of the run, followed by the byte for the color index. If the length of the run is 0, the run is 256. The attached files contains three uncompressed examples and one compressed example. The [login to view URL] is 8-bit, square aspect ratio and contains a red ABC on an orange background. The [login to view URL] 8-bit 12x7 aspect ratio and is a blue circle on a green background. The [login to view URL] is 24-bit and contains a flower. The [login to view URL] is 8-bit square and contains some colored rectangles.
Project ID: 3521166

About the project

3 proposals
Remote project
Active 13 yrs ago

Looking to make some money?

Benefits of bidding on Freelancer

Set your budget and timeframe
Get paid for your work
Outline your proposal
It's free to sign up and bid on jobs
Awarded to:
User Avatar
See private message.
$85 USD in 14 days
5.0 (7 reviews)
2.8
2.8
3 freelancers are bidding on average $170 USD for this job
User Avatar
See private message.
$170 USD in 14 days
4.8 (9 reviews)
3.9
3.9
User Avatar
See private message.
$255 USD in 14 days
0.0 (3 reviews)
0.0
0.0

About the client

Flag of UNITED STATES
Atlanta, United States
5.0
14
Payment method verified
Member since Aug 14, 2009

Client Verification

Thanks! We’ve emailed you a link to claim your free credit.
Something went wrong while sending your email. Please try again.
Registered Users Total Jobs Posted
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Loading preview
Permission granted for Geolocation.
Your login session has expired and you have been logged out. Please log in again.