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 ...
 
随机推荐
- 一种无法被Dump的jar包加密保护解决方案
			
作者: 我是小三 博客: http://www.cnblogs.com/2014asm/ 由于时间和水平有限,本文会存在诸多不足,希望得到您的及时反馈与指正,多谢! 工具环境: windwos10.I ...
 - [react] - 循环请求  redux-saga
			
//根据uuid 获取 apt报告信息 *getNotesByUid({ payload, callback }, { call, put }) { // payload 是个数组, 并发执行,参考r ...
 - 【python】写csv文件时遇到的错误
			
1.错误 在许多文件中,写入csv文件时都加"wb",w指写入,b指二进制 如: csvwrite=csv.writer(open("output.csv",& ...
 - TCP的keepalive和应用层的heart
			
从长链接说起 TCP是长链接的,也就是说连接建立后,及时数年没有通信连接仍然存在.这样做的好处是:免去了DNS解析的时间,连接建立等时间,大大加快了请求的速度,同时也有利于接受服务器的实时消息.但前提 ...
 - Jmeter官方插件实现Dubbo接口测试
			
目前主流的分布式框架有Dubbo和SpringCloud, SpringCloud是基于Http协议的分布式框架,Dubbo是基于RPC的分布式框架,Jmeter没有内置对Dubbo接口的支持,很难直 ...
 - 面试题——常见的gc算法有哪些?
			
常见的gc算法有哪些? java garbage collection是一个自动进程,用于管理程序使用的运行时内存.通过自动执行JVM,可以减轻程序中分配和释放内存资源的开销. 垃圾回收机制是由垃圾回 ...
 - linux——命令2—删除—查看—搜索
			
多种查看命令: 多种搜索命令: ll命令 -rw-rw-rw - 表示文件 drw-rw-rw d 表示目录文件夹 ========================== 使用rm删除文件 例如:r ...
 - 牛客练习赛51  C	勾股定理 (数学,结论)
			
链接:https://ac.nowcoder.com/acm/contest/1083/C来源:牛客网 题目描述 给出直角三角形其中一条边的长度n,你的任务是构造剩下的两条边,使这三条边能构成一个直角 ...
 - P2050 [NOI2012]美食节 动态加边加点
			
修车数据加强版 需要动态加边加点 #include<bits/stdc++.h> using namespace std; const int INF = 0x7f7f7f7f; , MA ...
 - vmware 虚拟配置固定IP就无法联网 centos
			
centos7虚拟机初始运行时ip是动态随机分配的 通过修改etc/sysconfig/network-scripts/ifcfg-ens33文件的配置可以设置固定的ipTYPE=EthernetPR ...