Creating MultiFrame images and dramatic increase in file size
-
Hello, I found the following code to create a MultiFrame image in C#[^] and used it on 3 jpeg files. The file sizes were 96 KB, 103 KB and 82 KB. However, the output file was 2.7 MB. It seems like the process is decompressing the jpegs or something. I tried to add another parameter to set the quality, but I really don't want to decrease the quality or change the dimensions. I'm basically trying to find the simplest methods to put the images into an "archive" that I can then read and separate the images at a later time. I don't want to use zip files. I just want to append all images and read them back via offsets and a binary reader and then display the images in a picture box. I'd like to also store these offsets in the output file as some sort of "header" record if possible. I'm trying to keep it simple and the output file size around the same size as the originals. Any thoughts here on the MultiFrame size issue or a sample of how to create a some "archive"? Thanks, Chris
-
Hello, I found the following code to create a MultiFrame image in C#[^] and used it on 3 jpeg files. The file sizes were 96 KB, 103 KB and 82 KB. However, the output file was 2.7 MB. It seems like the process is decompressing the jpegs or something. I tried to add another parameter to set the quality, but I really don't want to decrease the quality or change the dimensions. I'm basically trying to find the simplest methods to put the images into an "archive" that I can then read and separate the images at a later time. I don't want to use zip files. I just want to append all images and read them back via offsets and a binary reader and then display the images in a picture box. I'd like to also store these offsets in the output file as some sort of "header" record if possible. I'm trying to keep it simple and the output file size around the same size as the originals. Any thoughts here on the MultiFrame size issue or a sample of how to create a some "archive"? Thanks, Chris
If you read the documentation accompanying the sample, it says bitmaps are created from the supplied images and then saved in a tiff format; so yes, the images are decompressed before saving. (Tiff supports various compression schemes, but the sample doesn't give any details as to the particulars of the tiff encoder, and the result implies compression of the tiff was minimal, if employed at all.) If you're just trying to save the original images into a signle 'archive' file, just open a binary file and write the images into it, one after another. That'll preserve whatever encoding/compression scheme was used in the original image files. It'll be up to you to maintain some sort of index data giving file sizes and/or offsets into the binary archive so you can pull individual images out when you want. As you say, you could create a data structure for this purpose and put it at the head of the file where it'd be read first. Make the first member in the structure the number of images it contains, followed by size and offset for each individual image contained in the archive. It should be fairly simple to implement this, once you've worked out the details of your desired scheme.
L u n a t i c F r i n g e
-
If you read the documentation accompanying the sample, it says bitmaps are created from the supplied images and then saved in a tiff format; so yes, the images are decompressed before saving. (Tiff supports various compression schemes, but the sample doesn't give any details as to the particulars of the tiff encoder, and the result implies compression of the tiff was minimal, if employed at all.) If you're just trying to save the original images into a signle 'archive' file, just open a binary file and write the images into it, one after another. That'll preserve whatever encoding/compression scheme was used in the original image files. It'll be up to you to maintain some sort of index data giving file sizes and/or offsets into the binary archive so you can pull individual images out when you want. As you say, you could create a data structure for this purpose and put it at the head of the file where it'd be read first. Make the first member in the structure the number of images it contains, followed by size and offset for each individual image contained in the archive. It should be fairly simple to implement this, once you've worked out the details of your desired scheme.
L u n a t i c F r i n g e
Ah, the old RTFM gotcha. Oops! I really need to pay closer attention. LOL Yeah, I just decoder to append the images together, which keeps the size close. Now i'm just trying to work out saving off the indexes in the same file. Thanks for bringing that to my attention. Chris