C# 图片剪切与缩小的实例

时间:2021-12-31 14:32:53 


  public void CutToF(Stream stream)
            {
                Image initImage = Image.FromStream(stream, true);
                if (initImage.Width <= 480 && initImage.Height <= 480)
                {
                    initImage.Save("D://test.jpg", ImageFormat.Jpeg);
                }
                else
                {
                    int initWidth = initImage.Width;
                    int initHeight = initImage.Height;
                    if (initWidth != initHeight)
                    {
                        Image pickedImage = null;
                        Graphics pickedG = null;
                        if (initWidth > initHeight)
                        {
                            pickedImage = new Bitmap(initHeight, initHeight);
                            pickedG = Graphics.FromImage(pickedImage);
                            pickedG.InterpolationMode = InterpolationMode.HighQualityBicubic;
                            pickedG.SmoothingMode = SmoothingMode.HighQuality;
                            Rectangle fromR = new Rectangle(0, 0, initHeight, initHeight);//(initWidth - initHeight) / 2
                            Rectangle toR = new Rectangle(0, 0, initHeight, initHeight);
                            pickedG.DrawImage(initImage, fromR);
                            pickedImage.Save("D://jpg//test2.jpg");
                            initWidth = initHeight;
                        }
                        initImage = (Image)pickedImage.Clone();
                        pickedG.Dispose();
                        pickedImage.Dispose();
                        initImage.Save("D://jpg//test1.jpg");

                    }
                    Image resultImage = new Bitmap(150, 150);
                    Graphics resultG = Graphics.FromImage(resultImage);
                    resultG.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    resultG.SmoothingMode = SmoothingMode.HighQuality;
                    resultG.Clear(Color.White);
                    resultG.DrawImage(initImage, new Rectangle(0, 0, 100, 100), new Rectangle(0, 0, initWidth, initHeight), GraphicsUnit.Pixel);

                    ImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();
                    ImageCodecInfo ici = null;
                    foreach (ImageCodecInfo item in icis)
                    {
                        if (item.MimeType == "image/jpeg" || item.MimeType == "image/bmp" || item.MimeType == "image/png" || item.MimeType =="image/gif")
                        {
                            ici = item;
                        }
                    }
                    EncoderParameters ep = new System.Drawing.Imaging.EncoderParameters(1);
                    ep.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)100);
                    resultImage.Save("D://jpg//test.jpg", ici, ep);
                    ep.Dispose();
                    resultG.Dispose();
                    resultImage.Dispose();
                    initImage.Dispose();
                }
            }            
              

标签:图片,剪切,缩小
0
投稿

猜你喜欢

  • Spring maven filtering使用方法详解

    2021-07-02 22:14:46
  • Java构建JDBC应用程序的实例操作

    2023-08-07 12:09:13
  • Android之使用Bundle进行IPC详解

    2023-09-27 22:44:56
  • Mybatis中 mapper-locations和@MapperScan的作用

    2023-07-13 08:08:34
  • 深度理解Java访问修饰符

    2021-10-26 17:16:08
  • Java多个版本切换的几种方法

    2022-04-22 14:10:15
  • Java设计模式之命令模式_动力节点Java学院整理

    2023-12-11 13:32:03
  • 解决IDEA中maven导入jar包一直报错问题

    2021-12-26 11:52:22
  • Java 中的 xx ≠ null 是什么新语法

    2022-09-10 20:51:13
  • Android Studio用genymotion运行后小图标无法显示问题

    2021-08-17 03:00:22
  • Android Handler runWithScissors 梳理流程解析

    2023-01-29 11:51:27
  • Java使用Preference类保存上一次记录的方法

    2023-05-08 01:49:14
  • 详解java并发之重入锁-ReentrantLock

    2021-08-03 03:58:08
  • Java后台线程操作示例【守护线程】

    2023-11-25 01:35:44
  • IDEA 2021.2 激活教程及启动报错问题解决方法

    2023-11-14 14:10:27
  • Android 动态加载二维码视图生成快照的示例

    2023-08-04 19:57:54
  • JavaFx UI控件与代码间的绑定方法

    2021-09-13 00:40:27
  • 聊聊Spring——AOP详解(AOP概览)

    2023-11-01 04:44:18
  • Java Map集合用法详解

    2023-08-01 14:47:01
  • 深入解析Java多态进阶学习

    2022-05-16 16:06:55
  • asp之家 软件编程 m.aspxhome.com