技术 思绪 摘录 旅行
最近看到很多次,朋友圈九宫格切图,还有很多网站免费切图,收费制作等等,其实这个算法很简单,特别是.Net C#语言来操作图片,非常的简单,这里只是做一个记录和交流。

首先界面是下面这个样子的:

image.png

图片是下面这张:

25d5dcd71782c3beaa2222355416a66d.gif

代码如下:

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog fileDialog = new OpenFileDialog();
            fileDialog.Multiselect = false;
            fileDialog.Title = "请选择文件";
            fileDialog.Filter = "图片文件|*.jgp;*.png;*.jpeg;*.bmp;*.gif"; //设置要选择的文件的类型
            fileDialog.RestoreDirectory = true; //保存对话框是否记忆上次打开的目录 
            if (fileDialog.ShowDialog() == DialogResult.OK)
            {
                string file = fileDialog.FileName; //返回文件的完整路径 
                if (string.IsNullOrWhiteSpace(file))
                {
                    return;
                }
                Image bitmap = Image.FromFile(file);

                int icowidth = bitmap.Width;
                if (bitmap.Width > bitmap.Height)
                {
                    icowidth = bitmap.Height;
                }
                icowidth = Convert.ToInt32(icowidth / 3);

                for (int i = 1; i <= 3; i++)
                {
                    for (int j = 1; j <= 3; j++)
                    {
                        Bitmap map = new Bitmap(icowidth, icowidth);
                        Graphics g = Graphics.FromImage(map);
                        //把原图的哪一部分取出来
                        Rectangle fromR = new Rectangle(
                            (j - 1) * icowidth,
                            (i - 1) * icowidth,
                            icowidth,
                            icowidth);
                        //新图的哪一部分
                        Rectangle toR = new Rectangle(
                            0,
                            0,
                            icowidth,
                            icowidth);

                        g.DrawImage(bitmap, toR, fromR, GraphicsUnit.Pixel);
                        map.Save($"i/{i}{j}.png", ImageFormat.Png);

                        map?.Dispose();
                        g?.Dispose();
                        GC.Collect();
                    }
                }
                bitmap?.Dispose();
            }
        }

最后效果如下:

image.png

这个方法里面,是默认取最大的正方形,你也可以举一反三,加上边框或者其他效果。

CarsonIT 微信扫码关注公众号 策略、创意、技术

留下您的脚步

 

最近评论

查看更多>>

精选推荐

阅读排行

友情打赏

请打开您的微信,扫一扫