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的高清网络摄像机、德州仪器和控制海思
(本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此 ...
随机推荐
- jmeter 实现登录参数化
业务场景 在测试过程中,一般需要模拟不同的用户登录,这样压测的数据比较平均,也能更好的模拟真实的压力情况. 如果使用同一个用户账号进行测试,那么比如在查询代办的时候,此人的待办太多,也不符合实际的情况 ...
- textarea还剩余字数统计,支持复制粘贴的时候统计字数
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- BFS算法的优化 双向宽度优先搜索
双向宽度优先搜索 (Bidirectional BFS) 算法适用于如下的场景: 无向图 所有边的长度都为 1 或者长度都一样 同时给出了起点和终点 以上 3 个条件都满足的时候,可以使用双向宽度优先 ...
- selenium+python自动化100-centos上搭建selenium启动chrome浏览器headless无界面模式
环境准备 前言 selenium在windows机器上运行,每次会启动界面,运行很不稳定.于是想到用chrome来了的headless无界面模式,确实方便了不少. 为了提高自动化运行的效率和稳定性,于 ...
- 牛客NOIP暑期七天营-提高组6C:分班问题 (组合数)
题意:A班有N个人,B班有M个人,现在要组成一个新的班级C班,为了公平,从AB班各抽相同人数的人. 现在求所有方案中,人数之和是多少. 思路:即求Σ k*C(N,k)*C(M,k); 先忽略这个 ...
- 34、使用Python操作MySql数据库和MsSql数据库
一.数据库的安装和连接 1. PyMySQL的安装 pip install pymysql 2 .python连接数据库 import pymysql db = pymysql.connect(&qu ...
- Java 多线程学习扩展
http://www.imooc.com/video/5176 一.如何扩展Java并发知识 Java Memory Mode JMM描述了Java线程如何通过内存进行交互 happens-befor ...
- combineReducers(reducers)
combineReducers(reducers) 随着应用变得越来越复杂,可以考虑将 reducer 函数 拆分成多个单独的函数,拆分后的每个函数负责独立管理 state 的一部分. combine ...
- Vuejs组件基础
一.概念 ①组件就是对局部视图的封装,组件思想就是把一个很大的复杂的 Web 页面视图给拆分成一块一块的组件视图,然后利用某种特定的方式把它们组织到一起完成完整的 Web 应用构建. ②目前主流的前端 ...
- C语言中常见的图形打印总结
直角三角形(靠右直立) 示例实现代码如下: int main(){ int n; int i,j; cin >> n; if(n<= 0){ cout << " ...