bitmap, picture, photo file types overview
| ANI | Windows animated | Shows cursor animation |
| cursor | ||
| ART | AOL ART | Still images |
| BMP | Windows Bitmap | Windows and OS/2; 2/8/16/24/32 bpp; RLE and uncompressed |
| CUR | Windows cursor | |
| DCX | Multiple-page PCXd | All sub-types and multiple pages supported |
| DJV | DjVu | |
| EMF | Enhanced Metafile | Win32 enhanced placeable metafiles |
| Format | ||
| EPS | Encapsulated | Displays embedded thumbnail only (TIFF formats) |
| PostScript | ||
| GIF | Graphics Interchange | Single page and animated; 87a and 89a |
| Format | ||
| FPX | FlashPix | Multiple resolution support |
| ICN | AT&T ICN | |
| ICO | Windows icon | Shows multiple resolutions as separate pages |
| IFF | EA/Amiga Interchange | 1-24 bpp, including HAM and HAM8; multiple pages and animations not supported |
| File Format | ||
| JPG | JPEG JFIF | JFIF and AdobeTM CMYK |
| KDC | Kodak™ KDC | Reads both the full image and the embedded thumbnail |
| MAG | MAG | All sub-types supported |
| PBM | Portable BitMap | |
| PCD | Kodak™ PhotoCD | Up to 3072x2048 resolution (16BASE) |
| PCX | ZSoft Publisher's | All sub-types supported |
| Paintbrush | ||
| PGM | Portable GrayMap | |
| PIC | SoftImage PIC | All sub-types supported |
| PCT | Macintosh PICT | |
| PIX | Alias PIX | 24 bpp |
| PNG | Portable Network | All sub-types supported |
| Graphics | ||
| PPM | Portable PixMap | |
| PSD | Adobe™ PhotoShop | RGB, grayscale, duotone, paletted and bi-level Lab color interpreted as grayscale only |
| Document | ||
| PSP | Paint Shop Pro | Version 5 and version 6 |
| RAS | Sun Raster | Uncompressed and RLE compressed |
| RSB | Red Storm image | All sub-types are supported |
| format | ||
| SGI | SGI Image Format | 8-32 bpp; no colormaps; RLE or uncompressed |
| TGA | Targa TGA | All sub-types supported |
| TIFF | Tag Image File | 1/2/4/8/12/16 bits per sample, 1-4 samples per pixel. Bilevel/RGB/Paletted/CMYK/YCrCb/LOGL/LOGLUV. Uncompressed/PackBits/LZW//ThunderScan/ SGILog/CCITT/ZIP/NEXT/New-JPEG (no v6.0 JPEG support)Support for multi-page documents |
| Format | ||
| WMF | Windows Metafile | Win 3.x placeable metafiles |
| Format | ||
| XBM | X bitmap | |
| XPM | X pixmap | |
| Write support | ||
| BMP | Windows Bitmap | Windows 1/8/24 bpp |
| GIF | Graphics Interchange | Non-interlaced GIF 89a only |
| Format | ||
| JPEG | JPEG JFIF | 8 and 24 bpp. Progressive and baseline. Adjustable compression factor, subsampling, smoothing and Huffman code optimization. |
| PCX | ZSoft Publisher's | 8 and 24 bpp; RLE compressed |
| Paintbrush | ||
| PNG | Portable Network | 1/4/8 bpp colormapped; 24 bpp RGB |
| Graphics | ||
| RSB | Red Storm image | All sub-types supported |
| format | ||
| TGA | Targa TGA | 8 and 24 bpp. RLE and uncompressed. Top-down and bottom-up |
| TIFF | Tag Image File | 1/8/24 bits per pixel, single-page. Uncompressed, CCITT3, CCITT4, LZW, Deflate (ZIP), and JPEG compression. Adjustable DPI tags. |
| Format |
Everyone talk at once: .NET 4.0 will include Parallel Extensions
Parallelism in programming has largely been conducted in the laboratories. But with the next version of the .NET Framework, developers everywhere will be able to experiment with what could become a monumental change in languages.
In perhaps the most significant development in the brief history of the field of implicit parallelism in computing, one of Microsoft's development teams announced last Friday that the next .NET Framework 4.0 -- the first glimpses of which we'll see later this month from PDC in Los Angeles -- will include the so-called Parallel Extensions as a standard feature. This after the Extensions were first introduced in a Community Technology Preview last November.
The significance of these extensions is that they enable existing .NET languages (today, most predominantly, C#) to incorporate implicit parallelism directly in programs. In other words, rather than simply write ordinary procedural code and use compiler switches to determine whether code can be forked into parallel threads, a developer can use entirely new syntax to invoke methods that execute multiple threads concurrently.
In conjunction with the new Language Integrated Query (LINQ) that Microsoft already introduced formally earlier this year, the possibilities for parallel applications that run on multicore servers or data clusters is astounding. To explain: In the old procedural model of algorithmic programming, any function that affects a set of data in a table based on conditions, has to include instructions that explicitly examine each record in that table, test it for the current criteria, and invoke changes to all records that pass. With LINQ, a more SQL-like structure is utilized instead, where a single instruction can point automatically to all records that match criteria, and the change is stated once and once only.
Now, pair that with the Parallel Extensions: Using an up-and-coming syntax gleaned from calculus called lambda expressions, a C# developer can write an instruction where the criteria are expressed inline, similar to an anonymous delegate. It becomes a way of saying in a single expression, "For all x where x meets these criteria, make a change according to the following..."
One difference, as Microsoft developer and corporate VP Scott Guthrie explained in a recent blog post, has to do with explicit typing. Unlike the case with C#'s traditional anonymous delegates (a feature added with version 2.0), types in such inline functions do not need to be explicitly declared. "Unlike anonymous methods, which require parameter type declarations to be explicitly stated, Lambda expressions permit parameter types to be omitted and instead allow them to be inferred based on the usage," Guthrie wrote.
With a myriad of parallel threads operating on data concurrently -- most importantly, on the same data -- how will the compiler be able to keep track of which changes should be implemented when? For a database management system, that subject has already been explored and largely solved, using something called the transactional model.
Recently, a team of Microsoft researchers working with the Parallel Extensions have been investigating whether a similar transactional model can be applied at a much lower level.
"Transactional memory is not about 'removing locks' but is about abstracting away the requirement to specify a particular lock," wrote Microsoft researcher Dana Groff in a blog post last week. "Instead, you can structure your code in well defined sequential blocks of code, what in the database world we call 'units of work,' and then let the underlying runtime system, compiler, or hardware provide you the guarantees you desire. Further, you want this work to scale. To do that, the underlying system provides concurrency control optimistically. Instead of always locking a resource, the transactional memory system assumes that there is no contention. Instead, it detects when these assumptions are incorrect and rolls back changes that were made in the block. Depending on the implementation, the transactional memory system may then re-execute your block of code."
A transactional memory model would drastically reduce, if not completely eliminate, contention between multiple threads acting upon differing views of the same data in memory. The implementation of that model would most likely take place using extensions to programming languages made possible by Microsoft's Task Parallel Library, which will be one part of Parallel Extensions in .NET Framework 4.0.
Posted in: C# and .NET| Tags: NET Programming .NET 4.0 Parallel Extension Extension everyone experiment change framework version talk parallelism development