一、保存web网络图片

/// <summary>
/// 保存web图片到本地
/// </summary>
/// <param name="FileName"></param>
/// <param name="Url"></param>
/// <returns></returns>
public static bool SavePhotoFromUrl(string FileName, string Url)
{bool value = false;WebResponse response = null;Stream stream = null;try{WebRequest request = WebRequest.Create(Url);response = request.GetResponse();stream = response.GetResponseStream();if (!response.ContentType.ToLower().StartsWith("text/")){value = SaveBinaryFile(response, FileName);}}catch (Exception err){string aa = err.ToString();}return value;
}/// <summary>
/// 保存图片
/// </summary>
/// <param name="response"></param>
/// <param name="FileName"></param>
/// <returns></returns>
public static bool SaveBinaryFile(WebResponse response, string FileName)
{bool Value = true;byte[] buffer = new byte[1024];try{if (File.Exists(FileName)){DeleteFile(Application.StartupPath + "\\" + FileName);}Stream outStream = System.IO.File.Create(FileName);Stream inStream = response.GetResponseStream();int l;do{l = inStream.Read(buffer, 0, buffer.Length);if (l > 0)outStream.Write(buffer, 0, l);}while (l > 0);outStream.Close();inStream.Close();}catch{Value = false;}return Value;
}

二、压缩图片大小

/// <summary>
/// 图片压缩
/// </summary>
/// <param name="sFile">原文件路径</param>
/// <param name="dFile">新文件路径</param>
/// <param name="flag"></param>
/// <param name="sfsc"></param>
/// <returns></returns>
public static bool CompressImage(string sFile, ref string dFile, int flag = 90, bool sfsc = true)
{// 读取设置的文件大小为多少kbint size = int.Parse(SysContent.tabOneConfigDic["compressImageSize"]);Image iSource = Image.FromFile(sFile);ImageFormat tFormat = iSource.RawFormat;//如果是第一次调用,原始图像的大小小于要压缩的大小,则直接复制文件,并且返回trueFileInfo firstFileInfo = new FileInfo(sFile);if (sfsc == true && firstFileInfo.Length < size * 1024){if (File.Exists(dFile)){DeleteFile(dFile);}firstFileInfo.CopyTo(dFile);return true;}int dHeight = iSource.Height / 2;int dWidth = iSource.Width / 2;int sW = 0, sH = 0;//按比例缩放Size tem_size = new Size(iSource.Width, iSource.Height);if (tem_size.Width > dHeight || tem_size.Width > dWidth){if ((tem_size.Width * dHeight) > (tem_size.Width * dWidth)){sW = dWidth;sH = (dWidth * tem_size.Height) / tem_size.Width;}else{sH = dHeight;sW = (tem_size.Width * dHeight) / tem_size.Height;}}else{sW = tem_size.Width;sH = tem_size.Height;}Bitmap ob = new Bitmap(dWidth, dHeight);Graphics g = Graphics.FromImage(ob);g.Clear(Color.WhiteSmoke);g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;g.DrawImage(iSource, new Rectangle((dWidth - sW) / 2, (dHeight - sH) / 2, sW, sH), 0, 0, iSource.Width, iSource.Height, GraphicsUnit.Pixel);g.Dispose();//以下代码为保存图片时,设置压缩质量EncoderParameters ep = new EncoderParameters();long[] qy = new long[1];qy[0] = flag;//设置压缩的比例1-100EncoderParameter eParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy);ep.Param[0] = eParam;try{ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();ImageCodecInfo jpegICIinfo = null;for (int x = 0; x < arrayICI.Length; x++){if (arrayICI[x].FormatDescription.Equals("JPEG")){jpegICIinfo = arrayICI[x];break;}}if (jpegICIinfo != null){ob.Save(dFile, jpegICIinfo, ep);//dFile是压缩后的新路径FileInfo fi = new FileInfo(dFile);if (fi.Length > 1024 * size){flag = flag - 10;CompressImage(sFile, ref dFile, flag, false);}}else{ob.Save(dFile, tFormat);}return true;}catch{return false;}finally{iSource.Dispose();ob.Dispose();}
}

三、缩放图片比例

/// <summary>
/// 生成高清缩略图片方法
/// </summary>
/// <param name="image"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <returns></returns>
public static Image GetThumbnail(Image image, int width, int height)
{Bitmap bmp = new Bitmap(width, height);//从Bitmap创建一个System.Drawing.GraphicsSystem.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp);//设置 gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//下面这个也设成高质量gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;//下面这个设成Highgr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;//把原始图像绘制成上面所设置宽高的缩小图System.Drawing.Rectangle rectDestination = new Rectangle(0, 0, width, height);gr.DrawImage(image, rectDestination, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);return bmp;
}/// <summary>
/// 获取图片
/// </summary>
/// <param name="path"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <returns></returns>
public static Image GetImage(string path, int width, int height)
{try{string newPath = "";if (File.Exists(Application.StartupPath + path)){newPath = Application.StartupPath + path;}else{//如果图片不存在,使用默认图片//newPath = Application.StartupPath + LocalConfig.defaultPicPath;}FileStream fs = new FileStream(newPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);Image result = Image.FromStream(fs);fs.Close();result = GetThumbnail(result, width, height);return result;}catch (Exception e){return null;}
}

四、删除图片

/// <summary>
/// 删除文件
/// </summary>
/// <param name="filePath"></param>
public static void DeleteFile(string filePath)
{if (File.Exists(Path.GetFullPath(filePath))){File.Delete(Path.GetFullPath(filePath));}
}

C#保存图片、压缩图片大小、缩放图片比例相关推荐

  1. div css布局中CSS图片大小自动按比例等比例缩小图片不变形解决技巧

    div css布局中CSS图片大小自动按比例等比例缩小图片不变形解决技巧 在DIV CSS布局中对于图片列表或图片排版时,图片不是固定宽度高度大小,但图片占位是固定宽度高度,这个时候如果使用CSS固定 ...

  2. 图片的缩放----等比例缩放

    <?php //图片的缩放----等比例缩放---原图片大小是1001*572 $fileurl="./images/"; $s_img=imagecreatefromjpe ...

  3. android 手势事件 重写,Android实现通过手势控制图片大小缩放的方法

    本文实例讲述了Android实现通过手势控制图片大小缩放的方法.分享给大家供大家参考,具体如下: 该程序实现的是通过手势来缩放图片,从左向右挥动图片时图片被放大,从右向左挥动图片时图片被缩小,挥动速度 ...

  4. 怎么压缩图片大小,图片压缩方法

    怎么压缩图片大小?工作中如果遇到一些体积较大的图片,尤其一些清晰度很高的图片,可能一张小尺寸的图片就有2-3M的大小,这个我们的使用打开造成很多的麻烦,例如因为超过限制大小而不能上传,打开的时候很大, ...

  5. Java图片处理 - 缩放图片

    Java图片处理 - 缩放图片 Java原生代码实现缩放图片 上一章原生代码中执行测试代码: public static void main(String[] args) {/*这儿填写你存放要缩小图 ...

  6. python自带的PIL库扩展图片大小给图片加上文字描述

    利用python自带的PIL库扩展图片大小给图片加上文字描述.大多都是库函数调用,只是给定图片宽度后计算文字所需行数的代码需要写. 代码比较丑,but it works. #!/usr/bin/env ...

  7. python add picture显示过大_利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例...

    前言 最近的一个项目中需要在图片上添加文字,使用了OpenCV,结果发现利用opencv给图像添加文字有局限.可利用的字体类型比较少,需要安装Freetype扩展,比较复杂.而且不能用putText函 ...

  8. vue H5app plus调取手机相册,限制图片大小,图片转base64

    vue H5app plus调取手机相册,限制图片大小,图片转base64 直接上代码 filmImg(){ //移动端发送图片let _this = this plus.gallery.pick(f ...

  9. 压缩图片大小(根据比例,或直接给定宽高)

    public class ReduceImg {/** * 指定图片宽度和高度和压缩比例对图片进行压缩(如果rate>0,则widthdis和heightdist没用) * * @param i ...

  10. 图片怎么压缩图片大小_图片的体积怎么压缩?这三种方法你会吗?

    图片是我们在工作中经常要使用到的东西,在平时使用图片的时候相信大家都遇到过由于系统限制图片大小导致自己的图片无法上传的情况,这时候就需要对图片进行压缩了,把图片的体积降低到符合系统要求的大小,然后再进 ...

最新文章

  1. 转:从零开始开发一款Android App (from 简书)
  2. V-7 Openstack 在ceph中转换镜像格式
  3. boost::geometry::dot_product用法的测试程序
  4. fedora 使用 vnc 远程 fedora 28 主机
  5. android tv nugat,GitHub - GongXunYoung/Android-tv-widget: Android tv,盒子,投影仪 控件
  6. js获取ck_js取不到ckeditor textarea值
  7. 1. ansible-playbook 变量定义与引用
  8. 微信公众号吸粉8大策略,实战运营指南
  9. 维和医疗分队患者信息管理系统的开发与研究
  10. 将公式图片转word公式
  11. 139邮箱服务器的ip,[原创]中国移动139邮箱和说客
  12. js实现oss批量下载文件_jquery批量下载文件
  13. Python中的split()函数的详解
  14. 江西省九江市谷歌高清卫星地图下载
  15. 硬件设计——功率电感
  16. 计算机键盘桌滑道原理,电脑桌键盘滑道组装办法,办公桌下面的键盘托怎么安装...
  17. 【微积分】算法数学基础之微积分
  18. 字体美化方案(Dapper+WQY+MSfont)(11.1 更新英文字体美化)[转]
  19. 写小说十戒及一些技巧
  20. html中树状图实现方式

热门文章

  1. css中图片等比例缩放,自适应16:9实现
  2. 连续型随机变量+分布函数+密度函数+联合分布函数
  3. 二级域名间相互请求 ajax跨域请求
  4. 松柏先生:从《功守道》看电商品牌最后的机会!
  5. android studio 中要在app名称中添加特殊符号
  6. 如何批量将 Json 转为 Excel 格式
  7. c语言水电费系统,急求C水电费管理系统
  8. galton板matlab,Matlab实现Galton板的动画演示
  9. 一杯茶的时间,上手第三方登录类库 JustAuth
  10. Android adb脚本文件神器