[转]图片处理函数(自适应缩略图datatable中添加缩略图像)
生活随笔
收集整理的這篇文章主要介紹了
[转]图片处理函数(自适应缩略图datatable中添加缩略图像)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/// <summary>/// 為DataTable指定行中的生成縮略圖/// </summary>/// <param name="dataTable">數(shù)據(jù)源</param>/// <param name="dataTableImageColumnName">要生成縮略圖的數(shù)據(jù)源的列名</param>/// <param name="appendSmallPicColumnName">新增縮略圖數(shù)據(jù)列的列名</param>/// <param name="imageFormat">源圖像格式</param>/// <param name="maxWidth">圖像自適應(yīng)的最大寬度</param>/// <param name="maxHeight">最像自適應(yīng)的最大高度</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>/// 獲取圖像自適應(yīng)后的寬高(設(shè)置最大寬高)/// </summary>/// <param name="image">圖像</param>/// <param name="maxWidth">最大寬度</param>/// <param name="maxHeight">最大高度</param>/// <param name="newWidth">自適應(yīng)后的圖像寬度</param>/// <param name="newHeight">自適應(yīng)后的圖像高度</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>/// 獲取補(bǔ)足透明區(qū)域的圖像/// </summary>/// <param name="image">欲補(bǔ)足透明區(qū)域的圖像</param>/// <param name="minComplementSize">補(bǔ)足透明區(qū)域的最小像素塊大小(注:必須大于等于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>/// 獲取圖像對(duì)象/// </summary>/// <param name="imageByte">圖像二進(jìn)制數(shù)據(jù)</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>/// 獲取圖像二進(jìn)制數(shù)據(jù)/// </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;}
?
轉(zhuǎn)載于:https://www.cnblogs.com/oktell/p/4601517.html
總結(jié)
以上是生活随笔為你收集整理的[转]图片处理函数(自适应缩略图datatable中添加缩略图像)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySqlDataReader在Usin
- 下一篇: 更改数据库管理员sa账户密码