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

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

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

也就是在查询出来一个相冊图片  ,一页显示几十张,这几十张用缩略图来显示,看相信情况的时候想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

压缩前的图片

这样缩略图就成功了。

转载于:https://www.cnblogs.com/mfrbuaa/p/4194264.html

你可能感兴趣的文章
工作流,sharepoint 开发流程
查看>>
[转]Android推送方案分析(MQTT/XMPP/GCM)
查看>>
使用方向变换(directional transform)图像分块压缩感知
查看>>
朴素贝叶斯法
查看>>
YCbCr-YUV
查看>>
Win10 + MySQL + Tableu + PPT + 可视化方案
查看>>
vs2010+qt4编译出现error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject等错误...
查看>>
css权威指南学习笔记 —— css选择器
查看>>
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
查看>>
JS实现动态添加和删除div
查看>>
(转载)MySQL中UNION和UNION ALL的使用
查看>>
Visual Studio Code Angular4 配置环境
查看>>
Linux 学习碎片
查看>>
if else语句
查看>>
如何选择分类器?
查看>>
虚拟机Linux无法查看本地ip地址 解决办法
查看>>
[转]jvm加载类规则
查看>>
Python介绍
查看>>
windows 下创建 sqlite 数据库
查看>>
poj 3264(RMQ或者线段树)
查看>>