[转]图片处理函数(自适应缩略图datatable中添加缩略图像)
/// <summary>/// 为DataTable指定行中的生成缩略图/// </summary>/// <param name="dataTable">数据源</param>/// <param name="dataTableImageColumnName">要生成缩略图的数据源的列名</param>/// <param name="appendSmallPicColumnName">新增缩略图数据列的列名</param>/// <param name="imageFormat">源图像格式</param>/// <param name="maxWidth">图像自适应的最大宽度</param>/// <param name="maxHeight">最像自适应的最大高度</param>public static void GetSmallPic(DataTable dataTable, string dataTableImageColumnName, string appendSmallPicColumnName, ImageFormat imageFormat, int maxWidth, int maxHeight){var dc = new DataColumn(appendSmallPicColumnName, Type.GetType("System.Byte[]"));dataTable.Columns.Add(dc);for (int i = 0; i < dataTable.Rows.Count; i++){//生成缩略图GetSmallPic(dataTable.Rows[i], dataTableImageColumnName, appendSmallPicColumnName);var imageByte = (byte[])dataTable.Rows[i][dataTableImageColumnName];var ms = new MemoryStream(imageByte, 0, imageByte.Length);var sourceImage = Image.FromStream(ms);int newWidth, newHeight;ImageSelfAdaption(sourceImage, maxWidth, maxHeight, out newWidth, out newHeight);var myBitmap = new Bitmap(sourceImage, newWidth, newHeight);ms = new MemoryStream();myBitmap.Save(ms, imageFormat);dataTable.Rows[i][appendSmallPicColumnName] = ms.ToArray();ms.Close();}}/// <summary>/// 获取图像自适应后的宽高(设置最大宽高)/// </summary>/// <param name="image">图像</param>/// <param name="maxWidth">最大宽度</param>/// <param name="maxHeight">最大高度</param>/// <param name="newWidth">自适应后的图像宽度</param>/// <param name="newHeight">自适应后的图像高度</param>/// <returns></returns>public static void ImageSelfAdaption(Image image, int maxWidth, int maxHeight, out int newWidth, out int newHeight){var originalWidth = image.Width;var originalHeight = image.Height;double _newWidth = maxWidth, _newHeight = maxHeight;double t = originalWidth > maxWidth ? maxWidth : originalWidth;if (originalHeight * t / originalWidth > maxHeight){_newHeight = maxHeight;_newWidth = (double)maxHeight / originalHeight * originalWidth;}else{_newWidth = t;_newHeight = (t / originalWidth) * originalHeight;}newWidth = (int)_newWidth;newHeight = (int)_newHeight;}/// <summary>/// 获取补足透明区域的图像/// </summary>/// <param name="image">欲补足透明区域的图像</param>/// <param name="minComplementSize">补足透明区域的最小像素块大小(注:必须大于等于2)</param>/// <returns></returns>public static Bitmap GetComplementImage(Image image, int minComplementSize){if (minComplementSize < 2){return new Bitmap(image.Width, image.Height);}else{int newWidth = image.Width;int newHeight = image.Height;//宽度求余int width = image.Width % minComplementSize;//高度求余int height = image.Height % minComplementSize;//宽度不够if (width != 0){newWidth += minComplementSize - width;}if (height != 0) //高度不够 {newHeight += minComplementSize - height;}return new Bitmap(image, newWidth, newHeight);}}/// <summary>/// 获取图像对象/// </summary>/// <param name="imageByte">图像二进制数据</param>/// <returns></returns>public static Image GetImage(byte[] imageByte){if (imageByte != null){var ms = new MemoryStream();ms.Write(imageByte, 0, imageByte.Length);return Image.FromStream(ms);}return null;}/// <summary>/// 获取图像二进制数据/// </summary>/// <param name="image">图像</param>/// <param name="imageFormat">图像格式</param>/// <returns></returns>public static byte[] GetImageByteArray(Image image, ImageFormat imageFormat){var ms = new MemoryStream();image.Save(ms, imageFormat);var img = new byte[ms.Length];ms.Position = 0;ms.Read(img, 0, Convert.ToInt32(ms.Length));ms.Close();return img;}
转载于:https://www.cnblogs.com/oktell/p/4601517.html
[转]图片处理函数(自适应缩略图datatable中添加缩略图像)相关推荐
- R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义函数在三线表中添加p值
R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义函数在三线表中添加p值 目录
- 三线表是什么?R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、编写自定义函数在三线表中添加p值
三线表是什么?R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义三线表结构(将因子变量细粒度化重新构建三线图).编写自定义函数在三线表中添加p值 目录
- 给DataTable中添加一行数据
给DataTable中添加一行数据 一.如果该DataTable有两列,列的名称是Name,Age,且该DataTable的名称是dt; DataTable dt = new DataTable(); ...
- antd option宽度自适应_WordPress文章中添加自适应宽度的表格——墨涩网
WordPress文章中添加自适应表格,前面写文章的时候需要用到表格来表达阵列信息,但是在WordPress添加表格不想是在office中那样方便,需要借助插件或者代码才可以实现,今天分享一个不需要安 ...
- java窗体中添加图片_在java窗体程序中添加图片的方法
在java窗体程序中添加图片的方法 发布时间:2020-06-16 11:24:13 来源:亿速云 阅读:148 作者:Leah 这篇文章主要为大家详细介绍了在java窗体程序中添加图片的方法,图文详 ...
- 深入理解awgn函数如何向信号中添加高斯白噪声
引言 在数值模拟应用中,经常在模拟信号中添加噪声数据,分析不同模型的信号解析能力.博文使用MATLAB中提供的awgnawgn函数向信号XX添加高斯白噪声,但从实现原理上分析了awgnawgn的实现过 ...
- android项目添加图片,安卓开发:往项目中添加并使用图片
一 往项目中添加图片文件 (1)iOS项目 在iOS项目中,如果往项目中添加的图片是png格式的,就是往Assets.xcassets文件夹中添加. 如果不是png格式,比如jpg格式的图片,就不能往 ...
- 在DataTable中添加行和列数据
DataRow newRow = dtResult.NewRow(); newRow["ProName"] = "名字"; newRow["ProPr ...
- odoo13 报价单 PDF 中添加图片添加图片
odoo中数据的存储,XML 都是在 postgresql数据库中. --dev xml -c odoo.conf 添加这行代码,可以在更改了odoo中XML文件后不必每次升级模块. 原图: 效果图: ...
最新文章
- Linux交换Esc和Caps
- 【离散数学】实验 旅行路线规划问题
- 22 MM配置-采购-采购信息记录-定义编码范围
- TypeScript入门教程 之 const
- 搭建开发环境tomcat起不来
- java 链表算法_数据结构算法Java版(一) 链表
- emacs文件/目录比较工具
- 设计模式12——代理模式
- 成为高级程序员的 10 个步骤
- 自定义填充图案插件 cad_20个超实用天正CAD技巧,效率递增10倍,设计院师傅都在用...
- WEB 1.HTML
- 给你一个整数数组 nums 。 如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。
- 中国化肥产业发展现状及趋势分析,化肥产能过剩情况得到缓解「图」
- Hive的面试题总结
- php中``反引号的作用
- Linux 磁盘划分 LVM 逻辑分区管理步骤
- Android自定义View-一个可可爱爱的波浪特效
- 提交表单 form submit 不跳转实现
- 理解LSTMs (Long Short Term Memory Networks)
- MySQL 存储过程笔记
热门文章
- 判断作弊 牛客 编程_牛客企业服务产品-新功能速递-第5期
- php 什么函数获取ip,在PHP中获取ip地址的方法有哪些
- python实训内容_Python实验课:Python元组数据及其运算
- C++设计模式-桥接模式
- Qt工作笔记-pro文件中QMAKE_POST_LINK的使用
- Spring Boot中静态文件获得Thymeleaf支持(配置porm.xml)
- 如何低格台式计算机的硬盘,最新[电脑如何格式化]台式机如何格式化本地磁盘.doc...
- c语言 隐式声明,关于C#:隐式函数声明和链接
- python实现端口转发_Python TCP/IP协议下实现端口转发及重定向菜鸟教程
- 安装翻译_百度翻译下载安装官方地址