C#图片压缩处理

最近在做相册功能遇到一个问题,就是加载图片的时候然后放大,感觉有点卡。图片可能有点大,所以考虑用缩略图来实现。

也就是在查询出来一个相册图片  ,一页显示几十张,这几十张用缩略图来显示,看相信情况的时候想QQ相册样加载原图放大拉取图片相关信息。所用到的技术就是图片压缩功能。现在功能已经实现看代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            string pathPerc = @"D:\0046620140807150650cin.jpg";
            string source = @"G:\0046620140807150650cin.jpg";
            if (!File.Exists(pathPerc))
            {
                File.Create(pathPerc).Close();
            }
            else
            {
                File.Delete(pathPerc);
                File.Create(pathPerc).Close();
            }
            getThumImage(source, 18, 3, pathPerc);
        }

        #region getThumImage
        /**/
        /// <summary>
        /// 生成缩略图
        /// </summary>
        /// <param name="sourceFile">原始图片文件</param>
        /// <param name="quality">质量压缩比</param>
        /// <param name="multiple">收缩倍数</param>
        /// <param name="outputFile">输出文件名</param>
        /// <returns>成功返回true,失败则返回false</returns>
        public static bool getThumImage(String sourceFile, long quality, int multiple, String outputFile)
        {
            try
            {
                long imageQuality = quality;
                Bitmap sourceImage = new Bitmap(sourceFile);
                ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/jpeg");
                System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
                EncoderParameters myEncoderParameters = new EncoderParameters(1);
                EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, imageQuality);
                myEncoderParameters.Param[0] = myEncoderParameter;
                float xWidth = sourceImage.Width;
                float yWidth = sourceImage.Height;
                Bitmap newImage = new Bitmap((int)(xWidth / multiple), (int)(yWidth / multiple));
                Graphics g = Graphics.FromImage(newImage);

                g.DrawImage(sourceImage, 0, 0, xWidth / multiple, yWidth / multiple);
                g.Dispose();
                newImage.Save(outputFile, myImageCodecInfo, myEncoderParameters);
                return true;
            }
            catch
            {
                return false;
            }
        }
        #endregion getThumImage

        /**/
        /// <summary>
        /// 获取图片编码信息
        /// </summary>
        private static ImageCodecInfo GetEncoderInfo(String mimeType)
        {
            int j;
            ImageCodecInfo[] encoders;
            encoders = ImageCodecInfo.GetImageEncoders();
            for (j = 0; j < encoders.Length; ++j)
            {
                if (encoders[j].MimeType == mimeType)
                    return encoders[j];
            }
            return null;
        }

    }
}

看下压缩后的图片如下

11KB

压缩前的图片

这样缩略图就成功了。

时间: 2024-10-01 02:53:25

C#图片压缩处理的相关文章

java 图片压缩变色问题

java图片压缩,有时由于图片自身的原因,如透明的PNG图.改alpha通道或四色图等. 压缩完了,会出现图片变色的情况. 如: 原图 压缩完: 尝试了很多方法,如JDK原生的方式及第三方组件java-image-scaling或thumbnailator都不解决问题. 后来采用阿里的SimpleImage解决.记录一下 SimpleImage github地址:https://github.com/alibaba/simpleimage依赖jar:commons-io-2.4.jarcommo

Html5+asp.net mvc 图片压缩上传

在做图片上传时,大图片如果没有压缩直接上传时间会非常长,因为有的图片太大,传到服务器上再压缩太慢了,而且损耗流量. 思路是将图片抽样显示在canvas上,然后用通过canvas.toDataURL方法得到base64字符串来实现压缩. 废话不多少不多说直接看代码: 本次测试使用了 zepto.min.js 插件,更新版本的下载请点击这里 主要js代码: //图片压缩处理 ; (function () { /** * 加载的时候进行抽样检测 * 在iOS中,大于2M的图片会抽样渲染 */ func

iOS开发探索-图片压缩处理

介绍: 压: 指文件体积变小,但是像素数不变,长宽尺寸不变,那么质量可能下降.缩: 指文件的尺寸变小,也就是像素数减少,而长宽尺寸变小,文件体积同样会减小. 应用: 在实际开发中,我们经常会对图片进行处理,满足开发需求,以下介绍三种图片压缩处理: 1.压缩图片质量(图片体积减小,像素不变) 两种读取图片数据的简单方法:(1).UIImageJPEGRepresentation函数需要两个参数:图片的引用和压缩系数,压缩体积不是随压缩系数比例变化的.(2).UIImagePNGRepresenta

CxImager图片压缩助手v1.1免费版[下载]

CxImager图片压缩助手v1.1运行环境:WinXP/2003/Vista/Win2008/Win7软件版本:1.1软件大小:1.37M软件语言:简体中文软件类型:系统工具授权方式:免费版推荐星级:★★★★★ 修改时间: 2015年10月25日 12:38:28 MD5: 634F21AB6109A59F3A1DCC5AFA2F7F5A SHA1: 1AAA0E18AB20650DB3B4E846EA3F6FB7FDEEA7C0 CRC32: 00F6A62B 下载地址: 软件简介:   C

图片压缩的在线好工具

上周日参加了前端圈的一个走进名企腾讯专场的活动,在会议上有分享嘉宾谈到一个图片的压缩网址,当时也并未太放在心上,没想到本周就接了一个新项目,里面用到的图片都是那种大图,PNG居多,而领导又再三强调一定要保证网页的加载速度,当时就想到那次活动上分享的一个在线压缩工具,于是百度一搜图片压缩工具,发现一个在线图片压缩软件https://tinypng.com/,抱着试试的心态,上传了一张图片开始进行压缩,竟然图片小了一半多,而且图片质量损耗也不明显,果断把用到的图片都往上压了一次,同时发现这个工具对于

每日总结 - 图片压缩

利用android系统压缩方式进行图片压缩,代码: 1 private String path = "/sdcard/img.jpg"; 2 File f = new File(path); 3 Bitmap bm = PictureUtil.getSmallBitmap(this,path); 4 FileOutputStream fos; 5 try { 6 fos = new FileOutputStream(new File("/sdcard/", &quo

spring mvc 图片上传,图片压缩、跨域解决、 按天生成目录 ,删除,限制为图片代码等相关配置

spring mvc 图片上传,跨域解决 按天生成目录 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ #fs.domains=182=http://172.16.100.182:18080,localhost=http://localhost:8080 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE be

(转)Android学习-使用Async-Http实现图片压缩并上传功能

(转)Android学习-使用Async-Http实现图片压缩并上传功能 文章转载自:作者:RyaneLee链接:http://www.jianshu.com/p/940fc7ba39e1 让我头疼一个星期的图片批量上传服务器的问题最后受这篇文章的作者启发而解决,自己之前一直执着于通过uri地址找到图片然后上传图片,却没想过直接上传图片本身.感谢作者的博客和启发. 前言 (转载请注明出处,谢谢!) 最近在做一个小项目,项目中要实现上传图片到服务器,而这个例子是实现图片的尺寸压缩,将获取到的压缩图

图片压缩java工具类

package com.net.util; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import org

前端实现图片压缩上传

当项目中有图片上传功能时,便会产生服务器资源占用问题,为避免上传图片太大占用太多空间,需要将图片进行压缩之后再存储. 图片压缩可以通过前端或者后端都可以实现,这里主要闲扯一下我使用的前端图片压缩: 这里介绍的js压缩图片的主要思想是:首先求出上传的图片大小,然后判断是否大于限制的最大size,若大于,则将图片进行压缩.压缩的过程就是,使用canvas将要压缩的图片画出来. 首先使用FileReader对象读取图片,然后将图片进行压缩,将压缩之后的对象转换成blob对象(关于blob类型请参考ht