Convert Image to Icon

แปลงไฟล์ภาพ ไปเป็น icon มี 2 ตัวอย่าง ดังนี้
 
    /// <summary>
    /// Converts an image into an icon.
    /// </summary>
    /// <param name="img">The image that shall become an icon</param>
    /// <param name="size">The width and height of the icon. Standard
    /// sizes are 16x16, 32x32, 48x48, 64x64.</param>
    /// <param name="keepAspectRatio">Whether the image should be squashed into a
    /// square or whether whitespace should be put around it.</param>
    /// <returns>An icon!!</returns>
    private Icon MakeIcon(Image img, int size, bool keepAspectRatio) {
      Bitmap square = new Bitmap(size, size); // create new bitmap
      Graphics g = Graphics.FromImage(square); // allow drawing to it
 
      int x, y, w, h; // dimensions for new image
 
      if(!keepAspectRatio || img.Height == img.Width) {
        // just fill the square
        x = y = 0; // set x and y to 0
        w = h = size; // set width and height to size
      } else {
        // work out the aspect ratio
        float r = (float)img.Width / (float)img.Height;
 
        // set dimensions accordingly to fit inside size^2 square
        if(r > 1) { // w is bigger, so divide h by r
          w = size;
          h = (int)((float)size / r);
          x = 0; y = (size - h) / 2; // center the image
        } else { // h is bigger, so multiply w by r
          w = (int)((float)size * r);
          h = size;
          y = 0; x = (size - w) / 2; // center the image
        }
      }
 
      // make the image shrink nicely by using HighQualityBicubic mode
      g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
      g.DrawImage(img, x, y, w, h); // draw image with specified dimensions
      g.Flush(); // make sure all drawing operations complete before we get the icon
 
      // following line would work directly on any image, but then
      // it wouldn't look as nice.
      return Icon.FromHandle(square.GetHicon());
 
 

 
private void cmdConvert_Click(object sender, EventArgs e)
{
string source = @"d:\image.bmp";
string target = @"d:\image.ico";

BmpToIcon(source, target);
}

public static void BmpToIcon(string sourcePath, string
targetPath)
{

// Retrieve the bitmap from the file.
Bitmap bmp = (Bitmap)Image.FromFile(sourcePath);

// Convert the bitmap to an icon.
Icon ico = Icon.FromHandle(bmp.GetHicon());

// Create a file stream to save the icon stream.
Stream st = new FileStream(targetPath, FileMode.Create);

// Create a stream writer to physical write the data to
the disk.
BinaryWriter wr = new BinaryWriter(st);

// Write the binary icon data to the file stream.
ico.Save(st);

// Close the file to write the stream to the disk.
wr.Close();
 
ที่มา: dreamincode.net, bytes.com/topic/c-sharp