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


    利用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
        {
            private int ICON_W = 64;
            private int ICON_H = 64;

            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 <= 0 || height <= 0)
                    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 > 256 || width > 256)//ico maxsize 256*256
                                    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(0, 0, 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) / 2;  //     chop off excess width significance
                        if (rc.X < 0) rc.X = 0;
                    }
                    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) / 2; //     chop off excess height significance
                        if (rc.Y < 0) rc.Y = 0;
                    }
                    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
            }
        }
    }

  • 相关阅读:
    【20220502】连岳摘抄
    【20220423】家是孩子最重要的教育场所
    【20220425】连岳摘抄
    【20220430】连岳摘抄
    【20220427】二宝让我们省吃俭用
    【20220503】连岳摘抄
    工作感受月记202205月
    Appium实现百词斩
    Appium自动微信读书打卡
    删除ssh 连接缓存
  • 原文地址:https://www.cnblogs.com/JoshuaDreaming/p/1863263.html
Copyright © 2020-2023  润新知