/// <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中添加缩略图像)相关推荐

  1. R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义函数在三线表中添加p值

    R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义函数在三线表中添加p值 目录

  2. 三线表是什么?R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、编写自定义函数在三线表中添加p值

    三线表是什么?R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义三线表结构(将因子变量细粒度化重新构建三线图).编写自定义函数在三线表中添加p值 目录

  3. 给DataTable中添加一行数据

    给DataTable中添加一行数据 一.如果该DataTable有两列,列的名称是Name,Age,且该DataTable的名称是dt; DataTable dt = new DataTable(); ...

  4. antd option宽度自适应_WordPress文章中添加自适应宽度的表格——墨涩网

    WordPress文章中添加自适应表格,前面写文章的时候需要用到表格来表达阵列信息,但是在WordPress添加表格不想是在office中那样方便,需要借助插件或者代码才可以实现,今天分享一个不需要安 ...

  5. java窗体中添加图片_在java窗体程序中添加图片的方法

    在java窗体程序中添加图片的方法 发布时间:2020-06-16 11:24:13 来源:亿速云 阅读:148 作者:Leah 这篇文章主要为大家详细介绍了在java窗体程序中添加图片的方法,图文详 ...

  6. 深入理解awgn函数如何向信号中添加高斯白噪声

    引言 在数值模拟应用中,经常在模拟信号中添加噪声数据,分析不同模型的信号解析能力.博文使用MATLAB中提供的awgnawgn函数向信号XX添加高斯白噪声,但从实现原理上分析了awgnawgn的实现过 ...

  7. android项目添加图片,安卓开发:往项目中添加并使用图片

    一 往项目中添加图片文件 (1)iOS项目 在iOS项目中,如果往项目中添加的图片是png格式的,就是往Assets.xcassets文件夹中添加. 如果不是png格式,比如jpg格式的图片,就不能往 ...

  8. 在DataTable中添加行和列数据

    DataRow newRow = dtResult.NewRow(); newRow["ProName"] = "名字"; newRow["ProPr ...

  9. odoo13 报价单 PDF 中添加图片添加图片

    odoo中数据的存储,XML 都是在 postgresql数据库中. --dev xml -c odoo.conf 添加这行代码,可以在更改了odoo中XML文件后不必每次升级模块. 原图: 效果图: ...

最新文章

  1. Linux交换Esc和Caps
  2. 【离散数学】实验 旅行路线规划问题
  3. 22 MM配置-采购-采购信息记录-定义编码范围
  4. TypeScript入门教程 之 const
  5. 搭建开发环境tomcat起不来
  6. java 链表算法_数据结构算法Java版(一) 链表
  7. emacs文件/目录比较工具
  8. 设计模式12——代理模式
  9. 成为高级程序员的 10 个步骤
  10. 自定义填充图案插件 cad_20个超实用天正CAD技巧,效率递增10倍,设计院师傅都在用...
  11. WEB 1.HTML
  12. 给你一个整数数组 nums 。 如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。
  13. 中国化肥产业发展现状及趋势分析,化肥产能过剩情况得到缓解「图」
  14. Hive的面试题总结
  15. php中``反引号的作用
  16. Linux 磁盘划分 LVM 逻辑分区管理步骤
  17. Android自定义View-一个可可爱爱的波浪特效
  18. 提交表单 form submit 不跳转实现
  19. 理解LSTMs (Long Short Term Memory Networks)
  20. MySQL 存储过程笔记

热门文章

  1. 判断作弊 牛客 编程_牛客企业服务产品-新功能速递-第5期
  2. php 什么函数获取ip,在PHP中获取ip地址的方法有哪些
  3. python实训内容_Python实验课:Python元组数据及其运算
  4. C++设计模式-桥接模式
  5. Qt工作笔记-pro文件中QMAKE_POST_LINK的使用
  6. Spring Boot中静态文件获得Thymeleaf支持(配置porm.xml)
  7. 如何低格台式计算机的硬盘,最新[电脑如何格式化]台式机如何格式化本地磁盘.doc...
  8. c语言 隐式声明,关于C#:隐式函数声明和链接
  9. python实现端口转发_Python TCP/IP协议下实现端口转发及重定向菜鸟教程
  10. 安装翻译_百度翻译下载安装官方地址