首页 武冈文学 C#图片压缩处理

C#图片压缩处理

花满楼 蚂蚁蚂蚁 2009-06-22 20:56 53

Visual C#是微软公司推出的下一代程序开发语言,是微软.Net 框架中的的一个重要组成部分,在推出Visual C#的过程中,微软公司还推出了与之相对应的一个软件开发包--.Net FrameWork SDK。此软件开发包里面封装了许多类、对象。Visual C#就是通过调用这些类、对象来实现许多比较强大的功能。


-.概述:


正由于C#调用了许多功能强大的类和对象,所以用C#和.Net Framework实现各种不同图象格式之间的转化是非常方便,而用Windows API的话,由于没有直接的函数支持,工作量将会非常大。在C#下,你只要运用ImageFormat类(在System.Drawing.Imaging 名字空间下),就可以实现以下常见图象格式之间的转化了。


BMP - 扩展名.bmp


GIF - 扩展名.gif


Icon - 扩展名.ico


JPEG - 扩展名.jpg, .jpeg


PNG - 扩展名.png


TIFF - 扩展名.tif


WMF - 扩展名 .wmf



二.程序设计和运行的环境:


(1)微软公司视窗2000服务器


(2).Net FrameWrok SDK Beta 2版



三.具体步骤:


(1).在Visual Studio下新建一个C#的工程,不妨命名为Image Converter。图示如下:

(2).现在我们来设计程序的主界面:


先将窗体的Text属性设置为Image Converter。


再往窗体上添加两个Button控件、两个ComboBox控件以及一个PictureBox:


将两个Button控件的Name属性分别置为m_btnOpen和m_btnSaveAs,Text属性分别置为“打开”和“转化为”(不妨将它们的FlatStyle属性都置为Flat,因为现在流行Flat啊!)。


将两个ComboBox控件的Name属性分别置为m_cmbOpen和m_cmbSaveAs,将它们的Text属性都设置为*.bmp,同时在它们的Items属性中的字符串集合编辑器里均加入*.bmp*.jpg*.gif*.tif(每行一个)。


最后我们将PictureBox控件的Name属性设置为m_pictureBox,同时为了外观明显我们将它的BorderStyle属性改为FixedSingle。


好了,到此为止我们以及做好了所有的界面工作了。图示如下:

(3).接下来我们就编写代码部分(窗体右键的“查看代码”就可以打开代码文件):


首先我们在代码文件的开始处添加using System.Drawing.Imaging;因为该程序用到了ImageFormat类,而这个类是在System.Drawing.Imaging名字空间下的,所以必须添加这一句。


接着,给我们的类添加三个私有的数据成员:private Bitmap m_bitmap;private int m_width0;private int m_height0;在构造函数中初始化这三个数据成员,代码如下:


public Form1()


{


//


// Required for Windows Form Designer support


//


InitializeComponent();


//


// TODO: Add any constructor code after InitializeComponent call


//


m_bitmap = null;


m_width0 = m_pictureBox.Size.Width;


m_height0 = m_pictureBox.Size.Height;


}


最后,给“打开”和“转化为”两个按钮添加Click事件,生成两个消息相应函数,代码以及注释如下:


private void m_btnOpen_Click(object sender, System.EventArgs e)


{


//创建一个打开对话框对象


OpenFileDialog ofd = new OpenFileDialog();


//设置对话框的各项属性


ofd.Filter = m_cmbOpen.Text + "|" + m_cmbOpen.Text;


string filter = ofd.Filter;


ofd.InitialDirectory = System.Environment.CurrentDirectory;


ofd.Title = "打开图象文件";


ofd.ShowHelp = true;


if(ofd.ShowDialog() == DialogResult.OK)


{


//如果是OK,则建立一个图象对象


string strFileName = ofd.FileName;


m_bitmap = new Bitmap(strFileName);


//调整m_pictureBox的大小以适合图象大小


if(m_bitmap.Width > m_bitmap.Height)


{


//保持宽度


m_pictureBox.Width = m_width0;


m_pictureBox.Height = (int)((double)m_bitmap.Height*m_width0/m_bitmap.Width);


}


else


{


//保持高度


m_pictureBox.Height = m_height0;


m_pictureBox.Width = (int)((double)m_bitmap.Width*m_height0/m_bitmap.Height);


}


//显示图片


m_pictureBox.Image = m_bitmap;


//设置窗体的标题


this.Text = "Image Converter: " + strFileName;


m_btnSaveAs.Enabled = true;


}


}


private void m_btnSaveAs_Click(object sender, System.EventArgs e)


{


//创建一个保存对话框对象


SaveFileDialog sfd = new SaveFileDialog();


//设置对话框的各项属性


sfd.Title = "转化为";


sfd.OverwritePrompt = true;


sfd.CheckPathExists = true;


sfd.Filter = m_cmbSaveAs.Text + "|" + m_cmbSaveAs.Text;


sfd.ShowHelp = true;


if(sfd.ShowDialog() == DialogResult.OK)


{


//如果是OK,则根据不同的选项保存为相应格式的文件


string strFileName = sfd.FileName;


switch(m_cmbSaveAs.Text)


{


case "*.bmp":


// 在这里用ImageFormat类


m_bitmap.Save(strFileName, ImageFormat.Bmp);


break;


case "*.jpg":


// 在这里用ImageFormat类


m_bitmap.Save(strFileName, ImageFormat.Jpeg);


break;


case "*.gif":


// 在这里用ImageFormat类


m_bitmap.Save(strFileName, ImageFormat.Gif);


break;


case "*.tif":


// 在这里用ImageFormat类


m_bitmap.Save(strFileName, ImageFormat.Tiff);


break;


}


this.Text = "Image Converter: " + strFileName;


}


}


(4).OK啦,现在按Ctrl+F5试一下效果吧。图示如下:

四.总结:


以上,我们用C#很快做了个图片格式转化器,从中我们可以看到C#中类的强大功能。而且C#中有许许多多的类以及对象,如果能灵活地运用它们的话,就可以开发出很多功能强大的应用程序


对以上这个程序,我们还可以扩展其功能,比如我们做个图片格式批量转化的工具。这样的话,我们也不必一个一个地去打开文件,然后进行转化了,可以将一个目录中的所有图片文件转化为我们需要的文件格式,我想这在网页制作中图片格式处理时是非常有用的。有兴趣的读者可以试着去扩展一下这个功能。

阅读 2.0万
分享到:
评论列表

远方

呵呵,热闹没看到。

2514年前

张一

广告兄,你的声明很沉重呀,呵呵。

1314年前

东兴广告_5532

沉重声明:我支持恶搞,但不支持有污辱人格,谩骂他人的恶搞

1414年前

青橘子

写个发贴和跟贴的条款,让大家知道什么事情可以说,什么事情不可以说,这样就好了,别人都还不知道说出来可以呢还是不可以呢?所以就当可以发了! 动不动就删,唉,,,,,,

1814年前

吴可

48楼
辕门口_芦苇

感谢,我一直都很快乐。

1514年前

东兴广告_5532

但我认为:不能将会员全部的文章不分好坏全部删除.对于那些有对人身攻击,污辱人的文章就有必要删除!

2614年前

东兴广告_5532

我也相信高远,维持人网不容易!

2214年前

天天的向上

高远是我一生中最相信的人。我希望他的网站越来越好,


赵本山还是小沈阳????

1714年前

芦苇

吴可:感谢你对我的跟帖回复。
我只是就事论事。真的,这件事情就这样算了吧,很多事情越描越黑,但是有一点,高远是我一生中最相信的人。我希望他的网站越来越好,真的。让我们这些在异乡的人有一个倾诉的平台。

我希望我的老乡每一天都是快乐的,来人网也是快乐的。也希望你是快乐的。

2414年前

吴可

我只想求自保,没有钳制人
。。。。。。

1114年前

吴可

42楼
文坪_花满楼的评论,评论时间:2009-6-23 21:24:00

老师怕你,因为你看见了老师的见不得人的事情

站长怕你,因为你知道了站长见不得人的事情

用这种手段钳制人

好像史书上说是小人的行为吧

我应该没有人身攻击你吧。


谢谢夸奖。

1314年前

退出

我只看贴回贴外加灌水,还没有发过帖,好象没我江湖什么事。
以后要发就发英雄帖

1614年前

姚学好

36楼
其他地区_吴可的评论,评论时间:2009-6-23 19:07:00

至于贪污是谁?为了人网的和谐,我不说,想知道的去问袁志,问苏山,问陈碧秋等。。。

哈哈,这哥们有意思。恨不得将大家全拉入水。

1214年前

无情草

每个人要是说的和做的都一样那就历害了。

1414年前

蚂蚁蚂蚁

老师怕你,因为你看见了老师的见不得人的事情
站长怕你,因为你知道了站长见不得人的事情
用这种手段钳制人
好像史书上说是小人的行为吧
我应该没有人身攻击你吧。

1314年前

蚂蚁蚂蚁

从36楼的回答,可以看出,吴可,你对朋友真的是仗义,你人品不好,背后插人家的刀子,而且还要把朋友拉下水。
要是我,我不会这么说的。
从头到尾,觉得你最欢快,最滑,挡子弹的从来就是你的朋友。

714年前

吴可

辕门口_持节云中的评论,评论时间:2009-6-23 20:47:00

吴可,来上网就来上网,管那么宽干嘛!什么贪污?在网上道这些“莫须有”的东西就有点别有用心了,谁还敢认识你呀?一双警察眼睛。

如果要找污点,谁的个人生活没有污点?越是熟悉的人,就越容易被人了解自己的污点。这就有点那个“老乡见老乡,背后捅一刀”的滋味了。

建议去看看拙文《丑陋的武冈人》,如出一辙。

我对于把网友转为现实生活中的朋友,是慎之又慎之,就是出于这个原因。


好,这个意见我接受。

1414年前

云中乘风

吴可,来上网就来上网,管那么宽干嘛!什么贪污?在网上道这些“莫须有”的东西就有点别有用心了,谁还敢认识你呀?一双警察眼睛。
如果要找污点,谁的个人生活没有污点?越是熟悉的人,就越容易被人了解自己的污点。这就有点那个“老乡见老乡,背后捅一刀”的滋味了。
建议去看看拙文《丑陋的武冈人》,如出一辙。
我对于把网友转为现实生活中的朋友,是慎之又慎之,就是出于这个原因。

514年前

吴可

37楼
迎春亭_李()乐的评论,评论时间:2009-6-23 19:16:00

有人说:“我的初中老师一直是认为有我这样的学生是他一辈子的耻辱,因为我目睹了他见不得人的事,然后在不适当的时候说了出来。。。。”



有其父必有其子,有什么样的师傅,就教出什么样的徒弟,


高兴一个


这攻击有水平,没有一个脏字,就把别人的家人扯上了,学习了。谢谢!

1014年前

天天的向上

有人说:“我的初中老师一直是认为有我这样的学生是他一辈子的耻辱,因为我目睹了他见不得人的事,然后在不适当的时候说了出来。。。。”


有其父必有其子,有什么样的师傅,就教出什么样的徒弟,

高兴一个

1514年前

吴可

至于贪污是谁?为了人网的和谐,我不说,想知道的去问袁志,问苏山,问陈碧秋等。。。

1014年前

吴可

辕门口_芦苇的评论,评论时间:2009-6-23 11:49:00

顶8楼说的。

动不动就删帖不好,我只知道那些写的人都是用了心血的,就和生养一个孩子差不多,好也好,差也好,但多是自己的。还是要请人网的高层多想想。

如果能看到袁志他们又和舟子等朋友握手言欢那是一件多好的事情。

做为男人们,说了就说了,做了就做了,错了就错了,但不应当放在心里,变成隔夜仇。


我和舟子没仇。
和贪污有仇。

914年前

芦苇

顶8楼说的。
动不动就删帖不好,我只知道那些写的人都是用了心血的,就和生养一个孩子差不多,好也好,差也好,但多是自己的。还是要请人网的高层多想想。
如果能看到袁志他们又和舟子等朋友握手言欢那是一件多好的事情。
做为男人们,说了就说了,做了就做了,错了就错了,但不应当放在心里,变成隔夜仇。

814年前

青松

16楼邓家铺_云淡风轻的评论,评论时间:2009-6-22 23:37:00
文学本来是件神圣的事情,搞得剑拔弩张的又何必哦?我个人是尊敬文字如生命的人,不希望它被亵渎了,还是请和谐相处多好。也是对文学的一种尊敬,否则枉费了写文的笔墨!]]】

顶,说得对啊!!!

714年前

吴可

其他地区_执子之手的评论,评论时间:2009-6-23 8:06:00

我觉得有件事情很奇怪

但凡说说道辱骂、谩骂之类的字眼

吴可就会激动起来,有这必要么

你有没骂人,谁骂了人,大家都心知肚明的

911事件发生后,难道你需要满世界的去说自己是清白的,没有参与恐怖袭击?

那我把你的名字排在拉登的名字后面一起说你愿意么?

514年前

黄泥坵

李文乐老师的<<人网需要和谐,老乡需要团结>>贴也被删掉了?
这可是一篇很和谐的文章.

814年前

执子之手

我觉得有件事情很奇怪
但凡说说道辱骂、谩骂之类的字眼
吴可就会激动起来,有这必要么
你有没骂人,谁骂了人,大家都心知肚明的
911事件发生后,难道你需要满世界的去说自己是清白的,没有参与恐怖袭击?

1214年前

云淡风轻

呵呵,回复25楼:“谩骂”这两个词,可能是我跟帖不当严重了,但是我也只是说毋须谩骂的产生来引出后续我印证海阔天空的由来,并无他意。也谈不上特指。
我都说了那只是个人的浅薄观点,牵扯不到别人。如有得罪之处,您多多包涵,本来就是人微言轻的,不必和我计较!

514年前

东兴广告_5532

大家的文章我基本看了,我以为就只有袁志的哪篇文章里有对舟子的一句不当之词。这确实应当批评!要袁志向舟子道嫌就是了,凭舟子对袁志的推重,袁志也不应当那样做!我过去说支持恶搞舟子,也只是想拿舟子开玩笑而已,我一直认为舟子是最好玩的人,我也一直是舟子的支持者!他和性格和我能点相似,只是我没有他那样有才华!

814年前

吴可

如果还有人觉得我发的帖子有任何不妥,可以和我辩论。我保证,一如既往,不骂人,不记恨,咱们摆事实说道理,人网不能讲,给我一个小时,我一个小时做一个网站,咱们讲一下。
我以前发的帖子,每一句话都可以拿出来讨论,我想我还算是讲得严谨的。如果我之前发的帖子里,有哪一句讲得没有依据,我吞回去。

614年前

吴可

20楼
邓家铺_云淡风轻的评论,评论时间:2009-6-23 0:26:00

是该有“凭栏处,萧萧雨歇”,可那是爱国的怒发冲冠。

说文学既不止风花雪月,也谈反对暴力文学,那又何必持续谩骂和攻击的产生?如果尽是如此就没有所谓的退一步海阔天空的由来了。

呵呵,当然,这只是我个人的浅薄观点,不必介意


袁志是袁志,我是我,他有部分文字攻击人,只是证明他拍砖本事没到家,不要套到我头上来好不好?我从来就没有谩骂,那样太低级,太没有水平了,怎么你们都说我在谩骂?这不是侮辱我么?冤枉我可以接受,但是侮辱我不会接受。真的

1114年前

东兴广告_5532

我个人以为,恶搞取乐可以,但不能污辱别人格!

814年前

东兴广告_5532

不知道你们之间有什么隔阂!

1414年前

东兴广告_5532

没有你说得那么严重吧?!

2114年前

兵子驼

人网,让大家建立成一个和协的网站吧,大家不再生气了,。。。。

1314年前

云淡风轻

是该有“凭栏处,萧萧雨歇”,可那是爱国的怒发冲冠。
说文学既不止风花雪月,也谈反对暴力文学,那又何必持续谩骂和攻击的产生?如果尽是如此就没有所谓的退一步海阔天空的由来了。
呵呵,当然,这只是我个人的浅薄观点,不必介意

1214年前

吴可

邓家铺_云淡风轻的评论,评论时间:2009-6-22 23:37:00

文学本来是件神圣的事情,搞得剑拔弩张的又何必哦?我个人是尊敬文字如生命的人,不希望它被亵渎了,还是请和谐相处多好。也是对文学的一种尊敬,否则枉费了写文的笔墨!


文学不止是风花雪月,还有凭栏处,萧萧雨歇。我很反对暴力文学,就如同我反对暴力一样,可以事实上有些东西在现阶段是必需存在的,比如说ZF机关,无ZF多好呀,就不会FB了。

2414年前

吴可

6楼
邓元泰_股往金来的评论,评论时间:2009-6-22 21:21:00

网下的事网下解决,没必要闹到网上来!


同意股兄的看法、。

614年前

木鱼石

百家争呜,百花齐放。

514年前

云淡风轻

文学本来是件神圣的事情,搞得剑拔弩张的又何必哦?我个人是尊敬文字如生命的人,不希望它被亵渎了,还是请和谐相处多好。也是对文学的一种尊敬,否则枉费了写文的笔墨!

714年前

吴可

4楼
双牌_沈慧英/沈茹英的评论,评论时间:2009-6-22 21:19:00

袁志胡可都是人才,只要不瞎闹,我们还是会欢迎的。


谢谢长发飘飘姐姐呀(先这样称呼)

呵呵,我不喜欢闹,你看我之前的袁志舟子接招就知道,我说过人网太熟,闹,仅限那样的闹,我想那样应是可接受的,至少两个当事人都是接受的。

不过是因为有另外一些事情,有人不会也不敢欢迎我。怕我说漏了嘴,所以也是我一直不想发帖的原因之一啦。

1514年前

袁志

我再试一下,看能不能发

1114年前

袁志

谢谢大家的好意, 人网有朋友要看我的贴,不然我懒得误时间,我心情早转变过来了,看看我的贴就知道,可是被他们删了

3914年前

军少

对于破坏党纪党规的同志,立即执行枪决

呵呵,这个很好,以免毒瘤恶化呀

弄不好影响了一大片,呵呵,

4714年前

云中乘风

也要有处理混乱局面的能力,世界不可能永远是太平的。

3114年前

闯飘

我人老了,思维有点不清晰,怕讲错话,只好一边看看,不表态。

2814年前

姜远林

赞同2楼的说法,大家乡里乡亲的,有什么不同意见可以沟通的。

4414年前

苏山

建议高远与袁志、吴可他们沟通一下。也应该听听他们的意见和建议,作为一名网站管理员,就应该胸怀宽广,不要学政府那一套,只知道采取高压政策,灭杀是解决不了问题的。

4114年前

Dulean

顶2楼,要相信人之初,性本善。

4714年前

长发飘飘

袁志胡可都是人才,只要不瞎闹,我们还是会欢迎的。

4514年前

天天的向上

2楼
其他地区_执子之手的评论,评论时间:2009-6-22 21:03:00

我建议,袁志胡可他们新发的文章,只有没有攻击性

不会引起混乱,就没必要删除了吧
这个我同意

5314年前

执子之手

我建议,袁志胡可他们新发的文章,只有没有攻击性
不会引起混乱,就没必要删除了吧

4014年前

发表评论

已输入0/200 个字!

关注武冈人网
返回顶部