C# .net 高清压缩图片 合并图片方法
/// <summary>
/// 合并宽度一样的图片
/// </summary>
/// <param name="imgUrls">多张图片,按顺序合并</param>
/// <param name="mergeImgPath">合成图片的具体地址</param>
/// <returns></returns>
public bool MergeImg(List<string> imgUrls, string mergeImgPath)
{
imgUrls = imgUrls.OrderBy(c => c, new SemiNumericComparer()).ToList();
using (var file = File.OpenWrite(mergeImgPath))
{
try
{
Image image1 = System.Drawing.Image.FromFile(imgUrls[0]);
var width = image1.Width;
var height = image1.Height; //计算整体
for (int i = 1; i < imgUrls.Count(); i++)
{
using (Image tempImg = System.Drawing.Image.FromFile(imgUrls[i]))
{
height += tempImg.Height;
}
} using (Bitmap b = new Bitmap(width, height))
using (Graphics g = Graphics.FromImage(b))
{
g.CompositingMode = CompositingMode.SourceCopy; //先画第一个图片
g.DrawImageUnscaled(image1, 0, 0); //目前的高度
var currentHeight = image1.Height; //画多张图片
for (int j = 1; j < imgUrls.Count(); j++)
{
using (Image currentImg = System.Drawing.Image.FromFile(imgUrls[j]))
{
g.DrawImageUnscaled(currentImg, 0, currentHeight);
currentHeight += currentImg.Height;
}
}
b.Save(file, ImageFormat.Jpeg); }
return true; ;
}
catch (Exception ex)
{
return false;
}
}
} /// <summary>
/// Resize the image to the specified width and height.
/// </summary>
/// <param name="imagePath">The image to resize.</param>
/// <param name="width">The width to resize to.</param>
/// <param name="height">The height to resize to.</param>
/// <returns>The resized image.</returns>
public string ResizeImage(string imagePath, int width, int height)
{
if (imagePath.ToLower().Contains(".mp4"))
{
return "";
}
System.Drawing.Image image = System.Drawing.Image.FromFile(imagePath);
var destRect = new Rectangle(0, 0, width, height);
var destImage = new Bitmap(width, height); destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution); using (var graphics = Graphics.FromImage(destImage))
{
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; using (var wrapMode = new ImageAttributes())
{
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode);
}
}
#region 提高压缩质量
EncoderParameters ep = new EncoderParameters();
long[] qy = new long[1];
qy[0] = 1;//设置压缩的比例1-100,压缩比例越小越好
EncoderParameter eParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy);
ep.Param[0] = eParam;
#endregion #region 设置imgcodeinfo为JPEG
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;
}
}
#endregion var resizeImagePath = string.Empty;
if (jpegICIinfo != null)
{
resizeImagePath = imagePath.Replace("jpg", width + "x" + height + ".jpg");
destImage.Save(resizeImagePath, jpegICIinfo, ep); }
return resizeImagePath;
}
C# .net 高清压缩图片 合并图片方法的更多相关文章
- 如何录制高清GIF格式的图片
如何录制高清GIF格式的图片 工具:傲软GIF 下载地址:https://www.apowersoft.cn/gif 特点:质量高,能够一帧一帧的修改 使用简单.就不说了.自行尝试.这里只是提供一个制 ...
- 爱奇艺|B站|优酷|腾讯视频高清无水印视频下载方法(软件工具教程)
导读:经常在大型视频网站平台上看到一些很价值和视频,希望能高清无水印下载到本地学习观看,今天小程序定制开发代码哥DaiMaGe6给大家分享一招免费下载全网高清无水印视频的方法. 高清无水印视频下载工具 ...
- C#一些常用的图片操作方法:生成文字图片 合并图片等
生成文字图片: /// <summary> /// 生成文字图片 /// </summary> /// <param name="text">& ...
- .net core 图片合并,图片水印,等比例缩小,SixLabors.ImageSharp
需要引用 SixLabors.ImageSharp 和SixLabors.ImageSharp.Drawing 引用方法 NuGet包管理 添加程序包来源 https://www.myget.org/ ...
- java向图片上写字,两个图片合并的方法
package writeimg; import javax.imageio.ImageIO; import java.awt.Color; import java.awt.Font; import ...
- PHP图片压缩类,高清无损直接用就ok啦
这个不完全是我自己写的-_-!,但是好用呀 <?php /** * Created by PhpStorm. * Note:文件介绍 * User: Lynly * Date: 2018/11/ ...
- css图片高清适配
同一张图片,在普通屏显示正常,但高清屏出现模糊.原因是原来一个像素的点分成的四个像素的点进行了显示. 解决方案:在高清屏中把图片变成二倍图,前提是二倍的高清图已经存在. .icon{ backgrou ...
- C#生成高清缩略图 (装在自OPEN经验库)
来源 http://www.open-open.com/lib/view/open1389943861320.html 代码如下实现图片的高清缩略图 /// <summary> /// 为 ...
- 主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思
(本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此 ...
随机推荐
- ML-线性模型 泛化优化 之 L1 L2 正则化
认识 L1, L2 从效果上来看, 正则化通过, 对ML的算法的任意修改, 达到减少泛化错误, 但不减少训练误差的方式的统称 训练误差 这个就损失函数什么的, 很好理解. 泛化错误 假设 我们知道 预 ...
- Mysql 存储过程初识
存储过程 认识 在一些编程语言中, 如pascal, 有一个概念叫"过程" procedure, 和"函数" function, 如VB中的sub. Java, ...
- Golang: 读写之外的其他文件操作
在上一篇文章中,我们介绍了常用的文件读写操作,今天接着来研究一下,除了读写以外的其他常见文件操作. 一.创建目录: package main import ( "fmt" &quo ...
- python3.5如何安装statsmodels包?
如题: 系统win10,64 python3.5 32 使用pip install statsmodels 会报错,说cpython没有安装.一直找不到解决办法,就只好去第三方库下载了一个 http: ...
- H3C CSMA/CA
- Linux操作系统内核参数
Linux操作系统内核参数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一./proc目录 /proc目录: 内核把自己内部状态信息及统计信息,以及可配置参数通过proc伪文件系 ...
- kuangbin专题专题四 Silver Cow Party POJ - 3268
题目链接:https://vjudge.net/problem/POJ-3268 题意:点X处开办排队,其他点的牛到X点去参加派对,然后从X点回到各自的点,通路是单向的,所有牛都要走最短路, 求出所有 ...
- 剑指Offer_编程题-003 - 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList
如题 (总结) 首节点也存放了值,所以ListNode t = listNode; 直接从头开始遍历即可. 简单题目,但是构建的时候出了点问题,毕竟需要自己简单测测. 掌握链表的构建方法, 还要根据题 ...
- abp记录1
1在AbpWebApplication中的的构造函数中创建abpBootstrapper 实例,在Application_Start执行AbpBootstrapper值初始化方式 2AbpBootst ...
- class struct Equals
{ class clsA { private int _i; public int I { set { _i = value; } get { return _i; } } } struct strc ...