c#利用Grahics进行图片裁剪

最开始用了


代码如下:

/// <summary>
        /// 裁剪图片
        /// </summary>
        /// <param name="imagePath"/>
        /// <param name="savePath">"c:\images\"</param>
        private List<string> DefClipImage(string imagePath, string savePath)
        {

var fileInfo = new FileInfo(imagePath);
            if (!fileInfo.Exists)
                throw new Exception("图片" + imagePath + "不存在!");
            var savePathList = new List<string>();
            var spath = savePath + fileInfo.Name.Replace(fileInfo.Extension, string.Empty);
            try
            {
                var bitmap = new Bitmap(imagePath);
                var format = bitmap.PixelFormat;
                Bitmap cloneBitmap = bitmap.Clone(_cloneRect1, format);
                var tempPath = spath + "_1.jpg";
                cloneBitmap.Save(tempPath);
                savePathList.Add(tempPath);
                cloneBitmap.Dispose();
                cloneBitmap = bitmap.Clone(_cloneRect2, format);
                tempPath = spath + "_2.jpg";
                cloneBitmap.Save(tempPath);
                savePathList.Add(tempPath);
                cloneBitmap.Dispose();
                cloneBitmap = bitmap.Clone(_cloneRect3, format);
                tempPath = spath + "_3.jpg";
                cloneBitmap.Save(tempPath);
                savePathList.Add(tempPath);
                cloneBitmap.Dispose();
                cloneBitmap = bitmap.Clone(_cloneRect4, format);
                tempPath = spath + "_4.jpg";
                cloneBitmap.Save(tempPath);
                savePathList.Add(tempPath);
                cloneBitmap.Dispose();
                bitmap.Dispose();
                return savePathList;

}
            catch
            {
                throw new Exception("图片" + imagePath + "处理失败!");

}

}

但是速度太慢。

后来发现用grahics 会快很多


代码如下:

private void test()
        {

Bitmap bitmap = new Bitmap(Application.StartupPath + @"\Image\1.jpg");
            var bt = new Bitmap(7500, 3750);

var grahics = Graphics.FromImage(bt);
            grahics.DrawImage(bitmap, _cloneRect1, _cloneRect1,GraphicsUnit.Pixel);
            bt.Save(Application.StartupPath + "1.jpg");

grahics.DrawImage(bitmap, _cloneRect1, _cloneRect2, GraphicsUnit.Pixel);
            bt.Save(Application.StartupPath + "2.jpg");

grahics.DrawImage(bitmap, _cloneRect1, _cloneRect3, GraphicsUnit.Pixel);
            bt.Save(Application.StartupPath + "3.jpg");

grahics.DrawImage(bitmap, _cloneRect1, _cloneRect4, GraphicsUnit.Pixel);
            bt.Save(Application.StartupPath + "4.jpg");

grahics.Dispose();
            bt.Dispose();
        }

(0)

相关推荐

  • 使用JavaScript+canvas实现图片裁剪

    canvas是一个可以让我们使用脚本绘图的标签,它提供了一系列完整的属性和方法.我们可以借此来实现图形绘制,图像处理甚至实现简单的动画和游戏制作. canvas标签只有两个属性:width和height,用来设定画布的宽和高,如果没有通过标签属性或者脚本来设置,默认为300*150; 好了,canvas的介绍就先到这里,下面我们来看看javascript结合canvas实现图片的裁剪代码: 复制代码 代码如下: var selectObj = null; function ImageCrop(c

  • js+jquery实现图片裁剪功能

    现在我们在使用各大网站的个人中心时,都有个上传个人头像的功能.用户在上传了个人照片之后,可能不符合网站的要求,于是要求用户对照片进行裁剪,最终根据用户裁剪的尺寸生成头像.这个功能真是太棒了,原来不懂js的时候,感觉很神奇,太神奇了.心想哪天要是自己也能搞明白这里面的技术,那该多牛呀~大家是不是也有何我一样的想法呀~哈哈~~ 下面我们就来用javascript来实现这个功能吧. 复制代码 代码如下: <!DOCTYPE html> <html xmlns="http://www.

  • c#图片处理之图片裁剪成不规则图形

    为了让大家知道下面内容是否是自己想要的,我先发效果图. 好了,那就开始贴代码了 以下为一个按钮的事件,为裁剪准备图片.裁剪路径.保存路径 复制代码 代码如下: private void button1_Click(object sender, EventArgs e)        {            GraphicsPath path = new GraphicsPath();            Point[] p = {                            new

  • PHP图片裁剪函数(保持图像不变形)

    为了完成图片上传之后自动的裁剪,然后在前台显示出裁剪出的图片.需求如上,源码如下: 复制代码 代码如下: <? *exif_imagetype -- 判断一个图像的类型 *说明:函数功能是把一个图像裁剪为任意大小的图像,图像不变形 * 参数说明:输入 需要处理图片的 文件名,生成新图片的保存文件名,生成新图片的宽,生成新图片的高 */ // 获得任意大小图像,不足地方拉伸,不产生变形,不留下空白         function my_image_resize($src_file, $dst_f

  • javascript 图片裁剪技巧解读

    学php gd库 看到有图片裁剪 正好整一个 嗯 其实挺简单的 php版 复制代码 代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Res

  • jquery实现图片裁剪思路及实现

    思路:JS,jquery不能实现图片的裁剪,只是显示了一个假象 我的实现的方式大体如下: 1.将用户选中的图片上传到服务器 2.将选中头像的矩形框在图片上的坐标发送到服务器,包括,矩形框的宽,高,左上角的x,y坐标,图片的高,宽等 3.在服务器上用获得的各个坐标值,以及原始图片,用JAVA进行裁剪. ----------------------------------- jquery 裁剪效果显示,利用imgAreaSelect http://odyniec.net/projects/imgar

  • SpringMVC结合Jcrop实现图片裁剪

    本文实例为大家分享了SpringMVC结合Jcrop实现图片裁剪的具体代码,供大家参考,具体内容如下 一.jsp页面: <form name="form" action="<%=request.getContextPath()%>/UploadDemo/uploadHeadImage" class="form-horizontal" method="post" enctype="multipart/

  • JQuery Jcrop 实现图片裁剪的插件

    效果如下图请"运行代码"先试下运行,运行后请刷新一次,感受下: body{ margin:100px auto; text-align:center; } .jcrop-holder { text-align: left; } .jcrop-vline, .jcrop-hline{ font-size: 0; position: absolute; background: white url('http://img.jb51.net/jslib/images/Jcrop.gif') t

  • 使用gd库实现php服务端图片裁剪和生成缩略图功能分享

    裁剪示例: 最终裁剪成的图片: 其中虚线框内就是要裁剪出来的图片,最终保存成100宽的图片.代码如下: 复制代码 代码如下: $src_path = '1.jpg';//创建源图的实例$src = imagecreatefromstring(file_get_contents($src_path)); //裁剪开区域左上角的点的坐标$x = 100;$y = 12;//裁剪区域的宽和高$width = 200;$height = 200;//最终保存成图片的宽和高,和源要等比例,否则会变形$fi

  • 基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)

    正文:为了使层次分明及便于阅读,  整个解决方案如下: 其中BitmapCutter.Core是图片的服务器端处理程序, 类图为: 简单说明下, 更多说明可查看源码注释 : Cutter为裁剪对象, 用于存储客户端通过AJAX提交的数据. Helper为图片处理类, 包括图片翻转(RotateImage()), 图片裁剪(GenerateBitmap()). Callback为服务器端图片处理类, 通过使用Cutter封装客户端AJAX提交的数据, 然后调用Helper中的方法来完成图片处理.

随机推荐