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 ...
随机推荐
- 【00】why集搜客网络爬虫?
与各种大企业相比,大数据对于没有数据资源的个体而言是奢侈品. 然而在“互联网思维”.“互联网+”引领下,我们应当勇于实践和颠覆传统,将数据平民化. 不管你是财经.金融.经管.社科专业的技术小白,正在做 ...
- jQuery_基础
一.jQuery与DOM对象的转换. 1.jQuery对象转换为DOM对象:$cr[0] 或 $cr.get(0) $cr为jQuery对象 2.DOM对象转换为jQuery对象:$(cr) cr为D ...
- cf475B Strongly Connected City
B. Strongly Connected City time limit per test 2 seconds memory limit per test 256 megabytes input s ...
- 剑指offer-面试题.二叉树的镜像
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像. 二叉树节点定义如下: strcut BinaryTreeNode { int val; strcut BinaryTreeNode* m_ ...
- LeeCode-Remove Element
Given an array and a value, remove all instances of that value in place and return the new length. T ...
- MongoDB 复制
副本集:简单说,副本集就是有自动故障恢复功能的主从集群.主从集群和副本集最为明显的区别:副本集没有固定的“主节点”.整个集群会选出一个主节点.当其不能工作时,变更到其他节点.二者看起来非常相似:副本集 ...
- [Spring boot] web应用返回jsp页面
同事创建了一个spring boot项目,上传到svn.需要我来写个页面.下载下来后,始终无法实现在Controller方法中配置直接返回jsp页面. 郁闷了一下午,终于搞定了问题.在此记录一下. 目 ...
- Ajax下载文件(页面无刷新)
说明:Ajax是无法实现文件传输的,本文只是模拟了Ajax不刷新页面就可以请求并返回数据的效果.实质上还是通过提交form表单来返回文件流的输出. 分步实现逻辑: ajax请求服务器,访问数据库,根据 ...
- UVA 10282 (13.08.18)
Problem C: Babelfish You have just moved from Waterloo to a big city. The people here speakan incomp ...
- ubuntu14.04下arm-linux-gcc 4.5.1的安装与配置
使用的是友善之臂mini6410自带光盘中的. 1.对新版本arm-linux-gcc-5.4.1进行解压(注意,下面的C是大写的) tar zxvf arm-linux-gcc-4.5.1-v6-v ...