求对jpg文件进行图片缩小的简单算法
本人在做视频监控网站时,需要获取监控点的监控截图。由于截图的大小不能更改(我们是做二次开发),所以急需对截图jpg文件进行缩小,希望有做过这方面的高手提供一个能够对Jpg文件进行缩小(一般是从360*290到180*145),并保存到新的路径的简单可执行代码或算法。时间比较急,小弟第一次发帖,请多多照顾! 问题点数:100、回复次数:7Top
1 楼Sincee(小宇)回复于 2006-03-06 17:06:55 得分 0
补充一下,因为要进行不间断的缩小截图,所以photoshop或Firework之类的工具就派不上用场了,当然用Firework运行Script脚本还是能做到不间断缩小截图的,但总不至于要在所有监控点装Firework吧,所以还是运行个小程序比较方便...Top
2 楼wangk(倒之)回复于 2006-03-06 17:11:29 得分 100
GDI+
VOID Example_GetThumbnail(HDC hdc)
{
Graphics graphics(hdc);
// Create an image and a thumbnail of the image.
Image image(L"Crayons.jpg");
Image* pThumbnail = image.GetThumbnailImage(180, 145, NULL, NULL);
// Draw the original and the thumbnail images.
graphics.DrawImage(&image, 10, 10, image.GetWidth(), image.GetHeight());
graphics.DrawImage(
pThumbnail,
150,
10,
pThumbnail->GetWidth(),
pThumbnail->GetHeight());
delete pThumbnail;
}
Top
3 楼Sincee(小宇)回复于 2006-03-06 17:56:27 得分 0
wangk,你好,很感谢你这么快就回复我,不过因为我主要是做WEB开发的,对Windows编程不太懂,请问如何让这段代码运行起来,是在VC下还是C++.NET下,需要包含什么文件或导入什么命名空间,请简单的指导一下小弟,不胜感激!Top
4 楼wangk(倒之)回复于 2006-03-06 22:08:23 得分 0
include <gdiplus.h>
#pragma comment(lib,"gdiplus.lib")
就可以,VC、C++.NET都可以.详细参考MSDNTop
5 楼Sincee(小宇)回复于 2006-03-06 22:44:10 得分 0
好象因为图象载入位置在 Image image(L"Crayons.jpg")方法中出现一个读错误冲突,请问这个路径是相对什么?在吗,不在就继续查阅文档...Top
6 楼Sincee(小宇)回复于 2006-03-07 01:20:05 得分 0
功夫不负苦心人,终于搞定了,在此先谢谢wangk。
说明一下我的解决过程,希望对大家有所帮助:
首先参考了网上的一些关于VC.NET的GDI+图像处理的文档(不好意思,这方面我绝对是新手),如:
http://www.yesky.com/SoftChannel/72342380468174848/20040301/1772782.shtml
ADding 基于VC.NET的GDI+图像处理
http://www.yesky.com/SoftChannel/72348977504190464/20040314/1776892.shtml
基于Visual C++.NET的GDI+开发教程 图象处理部分
然后根据wangk朋友的代码(后来在MSDN中找到^_^)构造可执行代码,因为对VB比较熟悉,最后代码是用VB.NET实现的:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myImage As Image = Image.FromFile("C:\images.jpg")
Dim newImage As Image
Dim g As Graphics = Me.CreateGraphics
Dim myCallback As Image.GetThumbnailImageAbort
newImage = myImage.GetThumbnailImage(180, 145, myCallback, IntPtr.Zero)
newImage.Save("C:\images22.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
newImage.Dispose()
End Sub
注意一下,调用image.save()方法时,imageformat格式一定要设置成jpeg,否则当初因为要缩小文件大小的初衷可能就没办法实现罗!!!
再次感谢wangk和CSDN,今天看了无数的文档,终于有所收获,以后继续和大家共进步!Top
7 楼Sincee(小宇)回复于 2006-03-07 01:31:27 得分 0
http://www.myfaq.com.cn/A/2004-03-04/136640.html
基于VC.NET的GDI+编程之CImageTop




