博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#图片压缩处理
阅读量:5785 次
发布时间:2019-06-18

本文共 2970 字,大约阅读时间需要 9 分钟。

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

也就是在查询出来一个相冊图片  ,一页显示几十张,这几十张用缩略图来显示,看相信情况的时候想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        /**/        ///         /// 生成缩略图        ///         /// 原始图片文件        /// 质量压缩比        /// 收缩倍数        /// 输出文件名称        /// 
成功返回true,失败则返回false
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 /**/ /// /// 获取图片编码信息 /// 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

压缩前的图片

这样缩略图就成功了。

你可能感兴趣的文章
App上架/更新怕被拒? iOS过审“避雷秘籍”请查收
查看>>
CentOS 7 防火墙操作
查看>>
关于 top 工具的 6 个替代方案
查看>>
程序员最讨厌的9句话,你可有补充?
查看>>
PAT A1037
查看>>
浅谈RPC
查看>>
绝句二首-杜甫
查看>>
一个有意思的递归定义
查看>>
论文笔记之: Recurrent Models of Visual Attention
查看>>
命令行调用dubbo远程服务
查看>>
discuz 帖子模块用到的表及自动发帖函数
查看>>
如何将finecms链接URL中的list和show去掉
查看>>
SMS短信PDU编码
查看>>
企业级memcached部署(session共享)
查看>>
Eclipse内常用到的一些插件
查看>>
C# 应用程序配置文件操作
查看>>
[原创翻译]Protocol Buffer Basics: C#
查看>>
呵呵!手把手带你在 IIS 上运行 Python(转)
查看>>
Windows 10 1809 版本市场占有率已达 21%
查看>>
一条报警信息的快速处理和分析
查看>>