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