ASP.NET高质量生成缩略图
//调用方法
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using CLJIMG;
System.Drawing.Image image = System.Drawing.Image.FromStream(FileUp.PostedFile.InputStream);
int width = image.Width;
int height = image.Height;
if (width > 760)
{
width = 760;
height = image.Height * 760 / image.Width;
newwidth = 760;
newheight = image.Height * newwidth / image.Width;
// SendSmallImage(image, filename, newwidth, newheight);
CLJIMG.ImgClass simg = new ImgClass();
simg.SendSmallImage(image, Server.MapPath(filename), newwidth, newheight);
}
//生成高质量缩略图
#region
private Size NewSize(int maxWidth, int maxHeight, int width, int height)
{
double w = 0.0;
double h = 0.0;
double sw = Convert.ToDouble(width);
double sh = Convert.ToDouble(height);
double mw = Convert.ToDouble(maxWidth);
double mh = Convert.ToDouble(maxHeight);
if (sw < mw && sh < mh)
{
w = sw;
h = sh;
}
else if ((sw / sh) > (mw / mh))
{
w = maxWidth;
h = (w * sh) / sw;
}
else
{
h = maxHeight;
w = (h * sw) / sh;
}
return new Size(Convert.ToInt32(w), Convert.ToInt32(h));
}
//生成高质量缩略图
private void SendSmallImage(System.Drawing.Image img, string fileName, int maxWidth, int maxHeight)
{
// System.Drawing.Image img = System.Drawing.Image.FromFile(Server.MapPath(fileName));
System.Drawing.Imaging.ImageFormat thisFormat = img.RawFormat;
Size newSize = NewSize(maxWidth, maxHeight, img.Width, img.Height);
Bitmap outBmp = new Bitmap(newSize.Width, newSize.Height);
Graphics g = Graphics.FromImage(outBmp);
// 设置画布的描绘质量
g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(img, new Rectangle(0, 0, newSize.Width, newSize.Height),
0, 0, img.Width, img.Height, GraphicsUnit.Pixel);
g.Dispose();
if (thisFormat.Equals(ImageFormat.Gif))
{
Response.ContentType = "image/gif";
}
else
{
Response.ContentType = "image/jpeg";
}
// 以下代码为保存图片时,设置压缩质量
EncoderParameters encoderParams = new EncoderParameters();
long[] quality = new long[1];
quality[0] = 100;
EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
encoderParams.Param[0] = encoderParam;
//获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象。
ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo jpegICI = null;
for (int x = 0; x < arrayICI.Length; x++)
{
if (arrayICI[x].FormatDescription.Equals("JPEG"))
{
jpegICI = arrayICI[x];//设置JPEG编码
break;
}
}
if (jpegICI != null)
{
// outBmp.Save(Response.OutputStream, jpegICI, encoderParams);
outBmp.Save(Server.MapPath(fileName), jpegICI, encoderParams);
}
else
{
outBmp.Save(Response.OutputStream, thisFormat);
outBmp.Save(Server.MapPath(fileName), thisFormat);
}
img.Dispose();
outBmp.Dispose();
}
#endregion
ASP.NET高质量生成缩略图相关推荐
- asp.net上传图片自动生成缩略图功能代码
if (FileUpload1.FileName.ToString() == "") { Label3.Text = "请选择图片!"; } else { Bo ...
- 证件照转数字人只需几秒钟,微软实现首个3D扩散模型高质量生成效果,换装改形象一句话搞定 | CVPR 2023...
转载自 微软亚洲研究院 量子位 | 公众号 QbitAI 一张2D证件照,几秒钟就能设计出3D游戏化身! 这是扩散模型在3D领域的最新成果.例如,只需一张法国雕塑家罗丹的旧照,就能分分钟把他" ...
- CVPR 2023 | 微软提出RODIN:首个3D扩散模型高质量生成效果,换装改形象一句话搞定!...
点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入->[扩散模型]微信技术交流群 转载自:微软亚洲研究院 编者按:近日,由微软亚洲研究院提出的 ...
- 关于asp.net上传图片自动生成缩略图
/// <summary> /// 生成缩略图 /// </summary> /// <param name="fileName&quo ...
- java 缩略图 库_Thumbnailator:一个高质量Java缩略图开发库
February 24, 2020: Thumbnailator 0.4.11 has been released! See Changes for details. Thumbnailator is ...
- Asp.Net 上传图片并生成高清晰缩略图
在asp.net中,上传图片功能或者是常用的,生成缩略图也是常用的.baidu或者google,c#的方法也是很多的,但是一用却发现缩略图不清晰啊,缩略图片太大之类的事情,下面是我在处理图片上的代码, ...
- 点云数据生成三维模型_可直接编辑的高质量3D生成模型:三维深度生成方法SDM-NET...
机器之心发布作者:赵悠悠 中科院计算所.香港城市大学.英国卡迪夫大学以及加拿大西蒙弗雷泽大学的研究者,近日提出了一种能够表达几何细节和复杂拓扑结构的三维模型深度生成方法 SDM-NET,解决了之前方法 ...
- asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式
在网站开发时,生成缩略图是一个非常常见和实用的功能.以前在asp里只能借助com组件实现,现在在.net里可以利用框架的强大的类库轻松实现.下面帖出完整的代码(带详细注释),参考了网上的一些文章及.n ...
- asp.net生成高质量缩略图通用函数
Code 1 /**//// <summary> 2 /// 生成缩略图 3 /// </summary> 4 /// < ...
最新文章
- android内存碎片化怎么处理,安卓越用越卡毛病有解了!ColorOS内存反碎片化引擎让手机久用不卡...
- 近期有哪些值得读的QA论文?| 专题论文解读
- apk源码查看工具_如何查看Linux命令工具的源码?
- 免费馅饼 HDU - 1176
- pytest测试框架(五)---使用xfail将用例标记为失败
- Django---部署
- 《Android面试宝典》学习笔记(第三章:组件)
- 两万字长文:聊聊程序人生
- 计算机辅助审计的应用研究,计算机辅助审计技术在我国的应用状况研究(原稿)...
- k武装匪徒强化学习入门课
- Linux部署lamp(centos 7),照做就行
- 从零开始学做机器人——入门书籍资料
- 超便捷mail163手机邮箱登录方法
- 如何设计神经网络结构,visio画神经网络结构图
- ZT 一个老业务员的自白
- PInterest瀑布流类网站收集
- 专科院校计算机专业老师待遇,专科大学老师和本科大学老师,薪资待遇一样吗,原来是这样评定的...
- 72本值得一读再读的书
- 关于网页中的常见错误分析
- Centos7.9网络配置及图形界面的安装全流程
热门文章
- [AaronYang]那天有个小孩跟我说Js-NodeJS[AY0]-EJS
- 中国社交产品十年记...
- 赞!史上最全的互联网思维精髓总结
- 在Java8的foreach()中不能break,如果需要continue时,可以使用return
- Form表单提交按钮图片IE6下背景透明(js提交)
- Android-通过SlidingMenu高仿微信6.2最新版手势滑动返回(二)
- ElasticSearch大数据分布式弹性搜索引擎使用—从0到1
- 【HDU 4547 CD操作】LCA问题 Tarjan算法
- 虚拟机安装CentOS6.3及常见问题总结
- 6,bash入门,for 循环, 编写最简单的脚本