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的高清网络摄像机、德州仪器和控制海思
(本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此 ...
随机推荐
- error C4996: 'AVStream::codec': was declared deprecated
关闭VS的SDL检查 工程 属性=>C/C++ =>General=> SDL checks 改为 No(/sdl).
- Tomcat内存溢出解决方法
Java内存溢出详解 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出 JVM在 ...
- Codeforces Round #601 (Div. 2) E2. Send Boxes to Alice (Hard Version)
Codeforces Round #601 (Div. 2) E2. Send Boxes to Alice (Hard Version) N个盒子,每个盒子有a[i]块巧克力,每次操作可以将盒子中的 ...
- 算法 翻转二叉树 dfs
翻转二叉树 翻转一棵二叉树.左右子树交换. Example 样例 1: 输入: {1,3,#} 输出: {1,#,3} 解释: 1 1 / => \ 3 3 样例 2: 输入: {1,2,3,# ...
- Educational Codeforces Round 68 E. Count The Rectangles
Educational Codeforces Round 68 E. Count The Rectangles 传送门 题意: 给出不超过\(n,n\leq 5000\)条直线,问共形成多少个矩形. ...
- 编程语言和python介绍, 变量,小整数池,垃圾回收机制
1.编程语言的发展史 计算机是基于电工作(基于高.低电平)1010010101011 1.机器语言 优点:执行速度够快 缺点:开发效率非常低 2.汇编语言(通过英文字符组成) 优点:执行效率相较于机器 ...
- 如何获取gitee上的项目?
对于没有使用过github/gitee的朋友来说,估计是有点懵. 下面举个例子,比如获取我的gitee上的python接口自动化测试框架 访问主页:https://gitee.com/uncleyon ...
- 每隔15s异步刷新手机页面
前台异步js发请求代码: <script type="text/javascript"> var lightArr; var lightHistoryArr; /* 每 ...
- runtime - 消息发送(objc_msgSend)
http://www.jianshu.com/p/95c8cb186673 在OC中,我们对方法的调用都会被转换成内部的消息发送执行对objc_msgSend方法的调用,掌握好消息发送,可以让我们在编 ...
- TimeStamp( )函数, TimeStampAdd( )函数 , TimeStampDiff( )函数
官网:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timestampdiff TIMES ...