您现在的位置是:首页 >

图片保存成ico格式 利用C#转换图片格式,还可转换为ico

火烧 2021-08-14 13:34:57 1040
利用C#转换图片格式,还可转换为ico   注意:转换为ICO后效果不好  源代码:  u i g Sy tem   u i g Sy tem Collectio Ge eric   u i g Sy

利用C#转换图片格式,还可转换为ico  

  注意:转换为ICO后效果不好

  源代码:

  using System;

  using System Collections Generic;

  using System Text;

  using System Drawing;

  using System Drawing Imaging;

  using System IO;

  namespace paomiangege

  {

  public class ImageConvert

图片保存成ico格式 利用C#转换图片格式,还可转换为ico

  {

  private int ICON_W = ;

  private int ICON_H = ;

  public ImageConvert()

  {

  }

  //fileinpath origaly picture file path fileoutpath save filepath index the ImageFormat you want to convert to

  public string Convert(string fileinpath string fileoutpath string index)

  {

  try

  {

  Bitmap bitmap = new Bitmap(fileinpath);

  index = index ToLower();

  switch (index)

  {

  case jpg :  bitmap Save(fileoutpath ImageFormat Jpeg); break;

  case jpeg : bitmap Save(fileoutpath ImageFormat Jpeg); break;

  case bmp :  bitmap Save(fileoutpath ImageFormat Bmp); break;

  case png : bitmap Save(fileoutpath ImageFormat Png); break;

  case emf : bitmap Save(fileoutpath ImageFormat Emf); break;

  case gif : bitmap Save(fileoutpath ImageFormat Gif); break;

  case wmf : bitmap Save(fileoutpath ImageFormat Wmf); break;

  case exif : bitmap Save(fileoutpath ImageFormat Exif); break;

  case tiff :

  {

  Stream stream = File Create(fileoutpath);

  bitmap Save(stream ImageFormat Tiff);

  stream Close();

  } break;

  case ico :

  {

  Icon ico;

  Stream stream = File Create(fileoutpath);

  ico = BitmapToIcon(bitmap false);

  ico Save(stream);       //   save the icon

  stream Close();

  }; break;

  default: return Error! ;

  }

  return Success! ;

  }

  catch(Exception ex)

  {

  return ex Message;

  }

  }

  public string Convert(string fileinpath string fileoutpath string index int width int height)

  {

  if (width <= || height <= )

  return error!size illegal! ;

  try

  {

  Bitmap mybitmap = new Bitmap(fileinpath);

  Bitmap bitmap = new Bitmap(mybitmap width height);

  index = index ToLower();

  switch (index)

  {

  case jpg : bitmap Save(fileoutpath ImageFormat Jpeg); break;

  case jpeg : bitmap Save(fileoutpath ImageFormat Jpeg); break;

  case bmp : bitmap Save(fileoutpath ImageFormat Bmp); break;

  case png : bitmap Save(fileoutpath ImageFormat Png); break;

  case emf : bitmap Save(fileoutpath ImageFormat Emf); break;

  case gif : bitmap Save(fileoutpath ImageFormat Gif); break;

  case wmf : bitmap Save(fileoutpath ImageFormat Wmf); break;

  case exif : bitmap Save(fileoutpath ImageFormat Exif); break;

  case tiff :

  {

  Stream stream = File Create(fileoutpath);

  bitmap Save(stream ImageFormat Tiff);

  stream Close();

  } break;

  case ico :

  {

  if (height > || width > )//ico maxsize *

  return Error!Size illegal! ;

  Icon ico;

  ICON_H = height;

  ICON_W = width;

  Stream stream = File Create(fileoutpath);

  ico = BitmapToIcon(mybitmap true);

  ico Save(stream);       //   save the icon

  stream Close();

  }; break;

  default: return Error! ;

  }

  return Success! ;

  }

  catch (Exception ex)

  {

  return ex Message;

  }

  }

  private Icon BitmapToIcon(Bitmap obm bool preserve)

  {

  Bitmap bm;

  // if not preserving aspect

  if (!preserve)        // if not preserving aspect

  bm = new Bitmap(obm ICON_W ICON_H);  //   rescale from original bitmap

  // if preserving aspect drop excess significance in least significant direction

  else          // if preserving aspect

  {

  Rectangle rc = new Rectangle( ICON_W ICON_H);

  if (obm Width >= obm Height)   //   if width least significant

  {          //     rescale with width based on max icon height

  bm = new Bitmap(obm (ICON_H * obm Width) / obm Height ICON_H);

  rc X = (bm Width ICON_W) / ;  //     chop off excess width significance

  if (rc X < ) rc X = ;

  }

  else         //   if height least significant

  {          //     rescale with height based on max icon width

  bm = new Bitmap(obm ICON_W (ICON_W * obm Height) / obm Width);

  rc Y = (bm Height ICON_H) / ; //     chop off excess height significance

  if (rc Y < ) rc Y = ;

  }

  bm = bm Clone(rc bm PixelFormat);  //   bitmap for icon rectangle

  }

  // create icon from bitmap

  Icon icon = Icon FromHandle(bm GetHicon()); // create icon from bitmap

  bm Dispose();        // dispose of bitmap

  return icon;        // return icon

  }

  }

lishixinzhi/Article/program/net/201311/12504  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码