/// <summary> /// 裁剪图片 /// </summary> /// <param name="intWidth">要缩小裁剪图片宽度</param> /// <param name="intHeight">要缩小裁剪图片长度</param> /// <param name="strOldImgUrl">要处理图片路径</param> /// <param name="strNewImgUrl">处理完毕图片路径</param> public void CutGeneratedImage(int intStartX, int intStartY, int intWidth, int intHeight, string strOldImgUrl, string strNewImgUrl) { int level = 100; //缩略图的质量 1-100的范围 //缩小图片 using (Bitmap originBmp = new Bitmap(strOldImgUrl)) { //上传标准图大小 int w = 400; int h = (int)Math.Ceiling(originBmp.Height * decimal.Divide(400m, originBmp.Width)); Bitmap resizedBmp = new Bitmap(w, h); Graphics g = Graphics.FromImage(resizedBmp); //设置高质量插值法 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量,低速度呈现平滑程度 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; //消除锯齿 g.SmoothingMode = SmoothingMode.AntiAlias; g.DrawImage(originBmp, new Rectangle(0, 0, w, h), new Rectangle(0, 0, originBmp.Width, originBmp.Height), GraphicsUnit.Pixel); //处理JPG质量的函数 ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); ImageCodecInfo ici = null; foreach (ImageCodecInfo codec in codecs) { if (codec.MimeType == "image/jpeg") { ici = codec; break; } } EncoderParameters ep = new EncoderParameters(); ep.Param[0] = new EncoderParameter(Encoder.Quality, (long)level); //裁剪图片 Rectangle cloneRect = new Rectangle(intStartX, intStartY, intWidth, intHeight); PixelFormat format = originBmp.PixelFormat; Bitmap cloneBitmap = resizedBmp.Clone(cloneRect, format); //保存图片 cloneBitmap.Save(strNewImgUrl, ici, ep); g.Dispose(); resizedBmp.Dispose(); originBmp.Dispose(); } }
建产对象: Bitmap bm = new Bitmap("c:/1.bmp"); 缩放: Bitmap bm1 = new Bitmap(bm,width,height); 格式转换: bm.save("c:/1.jpg",ImageFromat.Jpeg); bm1.Save("c:/1.gif", ImageFormat.Gif); 剪切一个区域: //剪切大小 int cutwidth; int cutheight; Graphics g; //以大小为剪切大小,像素格式为32位RGB创建一个位图对像 Bitmap bm1 = new Bitmap(width,height,PixelFormat.Format32bppRgb) ; //定义一个区域 Rectangle rg = new Rectangle(0,0,cutwidth,cutheight); //要绘制到的位图 g = Graphics.FromImage(bm1); //将bm内rg所指定的区域绘制到bm1 g.DrawImage(bm,rg) Asp.net(C#)-放大缩小图片尺寸 /// <summary> /// 放大缩小图片尺寸 /// </summary> /// <param name="picPath"></param> /// <param name="reSizePicPath"></param> /// <param name="iSize"></param> /// <param name="format"></param> public void PicSized(string picPath, string reSizePicPath, int iSize, ImageFormat format) { Bitmap originBmp = new Bitmap(picPath); int w = originBmp.Width * iSize; int h = originBmp.Height * iSize; Bitmap resizedBmp = new Bitmap(w, h); Graphics g = Graphics.FromImage(resizedBmp); //设置高质量插值法 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量,低速度呈现平滑程度 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; //消除锯齿 g.SmoothingMode = SmoothingMode.AntiAlias; g.DrawImage(originBmp, new Rectangle(0, 0, w, h), new Rectangle(0, 0, originBmp.Width, originBmp.Height), GraphicsUnit.Pixel); resizedBmp.Save(reSizePicPath, format); g.Dispose(); resizedBmp.Dispose(); originBmp.Dispose(); } 引用地址 https://www.cnblogs.com/qfb620/archive/2010/05/22/1741519.html
前台
layui.use('upload', function () {
var $ = layui.jquery
, upload = layui.upload;
var jcrop_api, boundx, boundy;
function updatePreview(c) {
if (parseInt(c.w) > 0) {
var rx = 120 / c.w;
var ry = 120 / c.h;
$("#imgPreview").css({
Math.round(rx * boundx) + "px",
height: Math.round(ry * boundy) + "px",
marginLeft: "-" + Math.round(rx * c.x) + "px",
marginTop: "-" + Math.round(ry * c.y) + "px"
});
}
$("#hidXone").val(c.x);
$("#hidYone").val(c.y);
$("#hidXtwo").val(c.hidXtwo);
$("#hidYtwo").val(c.hidYtwo);
$("#hidImgWidth").val(c.w);
$("#hidImgHeight").val(c.h);
};
//普通图片上传
var uploadInst = upload.render({
elem: '#test1'
, url: '../ServiceData/SaveImgCrop.ashx?action=upload' //改成您自己的上传接口
, accept: 'images' //图片
, acceptMime: 'image/*'
, done: function (res) {
//如果上传失败
if (res.status > 0) {
return layer.msg('上传失败');
}
//上传成功
$("#cutimg").html("<img id="imgOriginal" name="imgOriginal" width="400" /><div style="overflow: hidden; position:absolute;top:0px;right:-150px;"><div style=" 110px; height: 110px; overflow: hidden;border-radius:110px"><img id="imgPreview" /></div><br /><input type="button" id="btnImgCut" onclick="cutSaveImg()" style=" height:30px;line-height:27px " value="裁剪并保存图片" class="uploadify-button " /></div>");
$("#cutimg img").each(function () { $(this).attr("src", res.message); });
$("#hidImgUrl").val(res.message);
$('#imgOriginal').Jcrop({
onChange: updatePreview,
onSelect: updatePreview,
aspectRatio: 1,
//maxSize: [120, 120],
setSelect: [0, 0, 120, 120]
}, function () {
var bounds = this.getBounds();
boundx = bounds[0];
boundy = bounds[1];
jcrop_api = this;
});
}
, error: function () {
//演示失败状态,并实现重传
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function () {
uploadInst.upload();
});
}
});
});