1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
private void createIcons_Click(object sender, EventArgs e)
{
string[] Files;
InputFolder = "D:\\XXXX";
// get the Tif files in the Input Directory
Files = Directory.GetFileSystemEntries(InputFolder, "*.tif");
int FileCount = Files.GetUpperBound(0) + 1;
if ((FileCount % 2) != 0)
return;
int NumberOfFrames = FileCount / 2;
Array.Sort(Files);
Bitmap[] Images = new Bitmap[NumberOfFrames];
System.Drawing.Icon FolderIcon = new Icon(InputFolder + "\\folder.ico"); // a remplacer
int[] Sizes = new int[5] { 16, 24, 32, 48, 96 };
for (int i = 0; i < NumberOfFrames; i++)
{
Bitmap bmp1 = new Bitmap(Files[i * 2]);
Bitmap bmp2 = new Bitmap(Files[i * 2 + 1]);
Bitmap folderbmp = FolderIcon.ToBitmap();
Bitmap folderbmp1 = new Bitmap(folderbmp, Sizes[i], Sizes[i]);
Images[i] = MergeTwoImage(bmp1, bmp2, folderbmp1);
Images[i].Save("D:\\Icone1_"+Sizes[i]+".bmp"); /// pour tester les images une a une, mais Gif viewer n'arrive pas a les ouvrir
}
ToMultiPageImage(Images, "c:\\final.bmp");
}
//
private void ToMultiPageImage(Image[] pages, string fileName)
{
Bitmap image = new Bitmap(pages[0]);
FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate);
// Get an encoder for saving with
System.Drawing.Imaging.Encoder enc = new System.Drawing.Imaging.Encoder(System.Drawing.Imaging.Encoder.SaveFlag.Guid);
//Obtain the TIFF codec info.
ImageCodecInfo info = GetCodec("image/tiff");// la si je met image/bmp il crache
//Create a parameter list. This needs 1 parameter in it.
EncoderParameters ep = new EncoderParameters(1);
//Place the MultiFrame encoder value in the parameter list
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);
//Save the first frame using the encoder and parameters
image.Save(stream, info, ep);
//Change the encoder value in the list to FrameDimensionPage
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.FrameDimensionPage);
//Use first of the master frame's overloaded SaveAdd methods to add subsequent images. Repeat this step for as many images as you want to add.
for (int i = 1; i < pages.Length; i++)
image.SaveAdd(pages[i], ep);
//Use the second of the master frames overloaded SaveAdd methods to flush, save and close the image.
ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.Flush);
image.SaveAdd(ep);
stream.Close();
} |
Partager