C# 缩放图片
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
public partial class Media_ImageCut : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string FilePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\0.gif";
string SavePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"/temp/1.gif";
int width = 100;
int height = 100;
ImageCut(FilePath,SavePath,width,height);
}
protected void ImageCut(string Path,string SavePath,int width,int height)
{
string imgPath = Path;//原图路径
System.Drawing.Image img = System.Drawing.Image.FromFile(imgPath);//获取原图
if (img.Width > width && img.Height > height)//不够width*height的不进行缩放
{
System.Drawing.Image img1 = new Bitmap(width, height);//获取新图的第一帧
Image img1_1 = new Bitmap(width, height);//新图的其他帧
Graphics GDI_1 = Graphics.FromImage(img1);//新图的第一帧GDI
Graphics GDI1_1 = Graphics.FromImage(img1_1);//新图的其他帧GDI
//绘制新图的第一帧
GDI_1.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;//呈现颜色时,覆盖其背景色
GDI_1.InterpolationMode = InterpolationMode.HighQualityBicubic;//质量最高的转换图像
GDI_1.PixelOffsetMode = PixelOffsetMode.HighQuality;//高质量、低速度呈现
GDI_1.SmoothingMode = SmoothingMode.HighQuality;//抗锯齿
GDI_1.Clear(Color.FromKnownColor(KnownColor.Transparent));//系统默认背景填充
//绘制新图其他帧的图像
GDI_1.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;//呈现颜色时,覆盖其背景色
GDI_1.InterpolationMode = InterpolationMode.HighQualityBicubic;//质量最高的转换图像
GDI_1.PixelOffsetMode = PixelOffsetMode.HighQuality;//高质量、低速度呈现
GDI_1.SmoothingMode = SmoothingMode.HighQuality;//抗锯齿
GDI_1.Clear(Color.FromKnownColor(KnownColor.Transparent));//系统默认背景填充
foreach (Guid guid in img.FrameDimensionsList)//遍历维数
{
FrameDimension f = FrameDimension.Time;//时间维度
int count = img.GetFrameCount(f);//根据时间维度获取总帧数
Encoder encode = Encoder.SaveFlag;//保存标志参数类别
EncoderParameters ep = null;//参数
ImageCodecInfo ici = null;//编码解码器
ImageCodecInfo[] icis = ImageCodecInfo.GetImageDecoders();//解码器集合
//获取gif的解码器
foreach (ImageCodecInfo ici1 in icis)
{
if (ici1.FormatID == ImageFormat.Gif.Guid)
{
ici = ici1;
break;
}
}
//遍历每一帧
for (int z = 0; z < count; z++)
{
img.SelectActiveFrame(f, z);
//第一帧
if (z == 0)
{
//将原图的第一帧画给新图的第一帧
GDI_1.DrawImage(img, new Rectangle(0, 0, width, height), new Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel);
for (int i = 0; i < img.PropertyItems.Length; i++)//获取原图的所有属性赋给新图
{
img1.SetPropertyItem(img.PropertyItems[i]);
}
ep = new EncoderParameters(1);
ep.Param[0] = new EncoderParameter(encode, (long)EncoderValue.MultiFrame);//指定对象的帧数多于1帧
img1.Save(SavePath, ici, ep);//将第一帧保存到新图
}
else
{
GDI1_1.DrawImage(img, new Rectangle(0, 0, width, height), new Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel);
for (int i = 0; i < img.PropertyItems.Length; i++)
{
img1_1.SetPropertyItem(img.PropertyItems[i]);
}
ep = new EncoderParameters(1);
ep.Param[0] = new EncoderParameter(encode, (long)EncoderValue.FrameDimensionTime);
img1.SaveAdd(img1_1, ep);
}
}
ep = new EncoderParameters(1);
ep.Param[0] = new EncoderParameter(encode, (long)EncoderValue.Flush);//关闭多帧文件流
img1.SaveAdd(ep);
img.Dispose();
img1.Dispose();
img1_1.Dispose();
GDI_1.Dispose();
GDI1_1.Dispose();
}
}
}
}
C# 缩放图片的更多相关文章
- Android 等比例缩放图片
// 缩放图片 public static Bitmap zoomImg(String img, int newWidth ,int newHeight){ // 图片源 Bitmap bm = Bi ...
- Andorid-如何为你的Android应用缩放图片
很难为你的应用程序得到正确的图像缩放吗?是你的图片过大,造成内存问题?还是图片不正确缩放造成不良用户体验的结果?为了寻求一个好的解决方案,我们咨询了Andreas Agvard(索尼爱立信软件部门), ...
- PHP按最大宽高等比例缩放图片类
本来用phpthumb来缩略图片是十分方便的,但是最近在sae上写项目发现phpthumb在sae上保存文件时会出问题,想来实现一个简单的按最大宽高等比例缩放图片类也并不困难,于是便自己写了一个方便修 ...
- IOS 缩放图片常用方法
/** * 指定Size压缩图片 (图片会压缩变形) * * @param image 原图 * @param size 压缩size * * @return 压缩后的图片 */ -(UIImage* ...
- Android拖动和缩放图片
Android拖动和缩放图片 2014年5月9日 我们在使用应用其中常常须要浏览图片.比方在微信其中.点击图片之后能够对图片进行缩放. 本博客介绍怎样对图片进行拖拽和缩放.这首先要了解Android中 ...
- JavaScript等比例缩放图片
js等比例缩放图片,这个功能非常实用,当网页加载一个尺寸比较大的图片时,往往会把一个网页撑的变形,页面变得很难看,于是我们就想到了用JS去控制超出一定范围的图片,以稳定页面布局,本代码段就是完成了此功 ...
- JS实现等比例缩放图片
JS实现等比例缩放图片 2014-01-19 21:57 by 龙恩0707, 40 阅读, 0 评论, 收藏, 编辑 JS实现等比例缩放图片 有时候我们前端页面只有500×500像素的宽和高的布局, ...
- php 上传缩放图片
有时上传图片时因为图片太大了,不仅占用空间,消耗流量,而且影响浏(图片的尺寸大小不一).下面分享一种等比例不失真缩放图片的方法,这样,不管上传的图片尺有多大,都会自动压缩到我们设置尺寸值的范围之内.经 ...
- 【转】java缩放图片、java裁剪图片代码工具类
一首先看下效果 二工具类 三测试类 在系统的上传图片功能中,我们无法控制用户上传图片的大小,用户可能会上传大到几十M小到1k的的图片,一方面图片太大占据了太多的空间,另一方面,我们没办法在页面上显示统 ...
- 在viewPager中双指缩放图片,双击缩放图片,单指拖拽图片
我们就把这个问题叫做图片查看器吧,它的主要功能有: (项目地址:https://github.com/TZHANHONG/ImageViewer/releases/tag/1.0,里面的MyImage ...
随机推荐
- 火狐浏览器,hostadmin hosts文件访问权限不足
开始->附件->以管理员身份运行. cacls %windir%\system32\drivers\etc\hosts /E /G Users:W
- 精简jQuery Tabs
闲来无事,周末用jQuery写了一个比较精简的Tabs,个别地方可以用到. 截图及代码如下: <!DOCTYPE html> <html> <head lang=&quo ...
- Scrapy学习系列(一):网页元素查询CSS Selector和XPath Selector
这篇文章主要介绍创建一个简单的spider,顺便介绍一下对网页元素的选取方式(css selector, xpath selector). 第一步:创建spider工程 打开命令行运行以下命令: sc ...
- InetAddress类的使用
1.1. 简介 IP地址是IP使用的32位(IPv4)或者128位(IPv6)位无符号数字,它是传输层协议TCP,UDP的基础.InetAddress是Java对IP地址的封装,在java.net中有 ...
- Kindeditor上传图片到七牛云存储插件(PHP版)
由于工作需要,要使用第三方存储作为图床,发现七牛云挺不错,又可以免费使用10G的空间,决定先试试. 项目中使用的是Kindeditor作为网页编辑器的,七牛云的插件里没有现成的Kindeditor的插 ...
- HTML+CSS学习
1.彻底弄懂CSS盒子模式(DIV布局快速入门) 2.在CSS中,BOX的Padding属性的数值赋予顺序为padding:10px; 四个内边距都是10px padding:5px 10px; 上下 ...
- oc语言--面向对象的三大特性
一.封装 1.什么是封装 在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将对象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的 ...
- 夏宇闻教授谈FPGA工程师的入门学习
1. 必须清楚自己究竟适合不适合做工程师. 看看自己的性格特点,是不是特别安静,又耐得住寂寞.因为FPGA工程师是一个辛苦的工作,不但要通过不断学习研究提升自己的设计水平,还要经常性的熬夜加班敲写代码 ...
- zend studio使用入门
使用zend studio8建立项目 使用PHP开发工具zend studio8进行PHP网站开发,就需要建立(导入)相应的项目,方法如下:右键左侧Workspace,选择New | PHP Proj ...
- 在非MFC的win 32程序里面能够使用CString类
论坛有会员用到了.,今天给大家说说CSring如何在非mfc下的调用第一:先要包含 #include "afx.h" 包含之后会报windows.h重复定义我们需要把这个头文件包含 ...