C#剪切生成高质量缩放图片
/// <summary>
/// 高质量缩放图片
/// </summary>
/// <param name="OriginFilePath">源图的路径</param>
/// <param name="TargetFilePath">存储缩略图的路径</param>
/// <param name="DestWidth">缩放后图片宽度</param>
/// <param name="DestHeight">缩放后图片高度</param>
/// <returns>表明此次操作是否成功</returns>
public static bool ToSuolue(System.IO.Stream oStream, string TargetFilePath, int towidth, int toheight)
{
//System.Drawing.Image OriginImage = System.Drawing.Image.FromFile(OriginFilePath);
System.Drawing.Image OriginImage = System.Drawing.Image.FromStream(oStream);
System.Drawing.Imaging.ImageFormat thisFormat = OriginImage.RawFormat;
//按比例缩放
int x = , y = ;
int ow = OriginImage.Width;
int oh = OriginImage.Height; if ((double)ow / (double)oh > (double)towidth / (double)toheight)
{
oh = OriginImage.Height;
ow = OriginImage.Height * towidth / toheight;
y = ;
x = (OriginImage.Width - ow) / ;
}
else
{
ow = OriginImage.Width;
oh = OriginImage.Width * toheight / towidth;
x = ;
y = (OriginImage.Height - oh) / ;
} Bitmap bt = new Bitmap(towidth, toheight); //根据指定大小创建Bitmap实例
using (Graphics g = Graphics.FromImage(bt))
{
g.Clear(Color.White);
//设置画布的描绘质量
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.DrawImage(OriginImage, new Rectangle(, , towidth, toheight),
new System.Drawing.Rectangle(x, y, ow, oh),
System.Drawing.GraphicsUnit.Pixel);
g.Dispose();
} System.Drawing.Imaging.EncoderParameters EncoderParams = new System.Drawing.Imaging.EncoderParameters(); //取得内置的编码器
long[] Quality = new long[];
Quality[] = ;
System.Drawing.Imaging.EncoderParameter EncoderParam = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Quality);
EncoderParams.Param[] = EncoderParam; //try
//{
//获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象
System.Drawing.Imaging.ImageCodecInfo[] arrayICI = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();
System.Drawing.Imaging.ImageCodecInfo jpegICI = null;
for (int i = ; i < arrayICI.Length; i++)
{
if (arrayICI[i].FormatDescription.Equals("JPEG"))
{
jpegICI = arrayICI[i]; //设置为JPEG编码方式
break;
}
} if (jpegICI != null) //保存缩略图
{
bt.Save(TargetFilePath, jpegICI, EncoderParams);
}
else
{
bt.Save(TargetFilePath, thisFormat);
}
OriginImage.Dispose();
return true;
//}
//catch (System.Runtime.InteropServices.ExternalException e1) //GDI+发生一般错误
//{
// return false;
//}
//catch (Exception e2)
//{
// return false;
//}
}
C#剪切生成高质量缩放图片的更多相关文章
- java高质量缩放图片
可按照比例缩放,也可以指定宽高 import com.sun.image.codec.jpeg.JPEGImageEncoder; import com.sun.image.codec.jpeg.JP ...
- C#放缩、截取、合并图片并生成高质量新图的类
原文:C#放缩.截取.合并图片并生成高质量新图的类 using System;using System.Drawing;using System.Drawing.Imaging;using Syste ...
- atitit.thumb生成高质量缩略图 php .net c++ java
atitit.java thumb生成高质量缩略图 php .net c++ 1. 图像缩放(image scaling)---平滑度(smoothness)和清晰度(sharpness) 1 2. ...
- 移动Web—CSS为Retina屏幕替换更高质量的图片
来源:互联网 作者:佚名 时间:12-24 10:37:45 [大 中 小] 点评:Retian似乎是屏幕显示的一种趋势,这也是Web设计师面对的一个新挑战;移动应用程序的设计师们已经学会了如何为Re ...
- 使用 FFmpeg 处理高质量 GIF 图片
使用 FFmpeg 处理高质量 GIF 图片 - 为程序员服务 http://ju.outofmemory.cn/entry/169845
- C# GDI生成清晰【高质量】图片
对于GDI+,在正常的操作,Bitmap,Graphcis,DrawImage或者DrawString ,生成图片的话,会产生很多杂点,或者是图片质量不稳定.尤其是在读取图片后,生成缩略图之后,文件会 ...
- Python高质量缩放切图,抗锯齿
最近刚接触Python,以迅雷不及掩耳盗铃之势(只是迫不及待)应用到工作中去了之前用 cmd+photoshop做批量图像处理(缩放切片),在执行效率(速度)上和灵活度上有很大限制,遂转战Python ...
- Highcharts结合PhantomJS在服务端生成高质量的图表图片
项目背景 最近忙着给部门开发一套交互式的报表系统,来替换原有的静态报表系统. 老系统是基于dotnetCHARTING开发的,dotnetCHARTING的优势是图表类型丰富,接口调用简单,使用时只需 ...
- java图片高质量缩放类
import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import java.awt.image.BufferedI ...
随机推荐
- Spring MVC 全局异常处理&文件上传
Spring MVC 全局异常处理 使用SimpleMappingExceptionResolver实现异常处理 在welcome-servlet.xml进行如下配置: <bean class= ...
- phpstorm 习惯设置
phpstorm 习惯设置 1. 字体:Source Code Pro 大小:14 链接: https://pan.baidu.com/s/1HLpbduBHFvbq1a10QV4uCg 提取码: y ...
- asp.net 身份验证(Update)
ASP.NET 有四种 身份验证, 用的最广的就是 Froms 这几天 做项目 想用到 配置文件, 比较了 MVC 和ASP.NET 发现 还是 MVC 给力(MVC 叫做 过滤器 ...
- Linux上jdk,mysql,tomcat安装
一:RPM(红帽软件包管理器):相当于windows的添加/卸载程序(控制面板),进行程序的安装.更新.卸载.查看: 本地程序安装:rpm -ivh 程序名 本地程序查看:rpm -qa 本地程序卸载 ...
- CentOS7.x忘记root密码如何破解
在CentOS7.x中,有一个单用户模式.CentOS7.x进入单用户模式与CentOS6.x略有不同,要复杂一些. 如果我们忘记了root的密码,可以在单用户模式下重置密码. 注意:此操作必须在服务 ...
- 用实例的方式去理解storm的并发度
什么是storm的并发度 一个topology(拓扑)在storm集群上最总是以executor和task的形式运行在suppervisor管理的worker节点上.而worker进程都是运行在jvm ...
- 关于Linux连接工具mobaxterm显示中文乱码问题
本人用的是MobaXterm Personal 9.1版本.近期发现连接上服务器,查看日志时,发现中文乱码,无法正常显示.甚是苦恼.百度搜索该工具显示乱码问题,无一人解决.提倡更换连接工具.无意间发现 ...
- 牛客练习赛48 E 小w的矩阵前k大元素
E 思路: 优先队列,将迭代器变量作为结构体的变量. 迭代器走的时候只能像一个方向走,另外一个方向只有最开始才走.如下图所示: 如果两个方向同时走,同一个值会被遍历多次,像上图那样就能保证每个位置都走 ...
- 【CF1218E】Product Tuples
题目大意:给定一个长度为 \(N\) 的序列,求从序列中选出 \(K\) 个数的集合乘积之和是多少. 题解: 由于是选出 \(K\) 个数字组成的集合,可知对于要计算的 \(K\) 元组来说是没有标号 ...
- Java8-Stream-No.11
import java.util.Arrays; import java.util.List; public class Streams11 { static class Person { Strin ...