vb.net图像压缩

ganenpingsohucom 2003-07-10 10:43:31
怎么能实现用vb.net 实现把gif,jpg图像文件的大小,尺寸压缩为自己定义的阿?
...全文
380 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
panyee 2003-08-08
  • 打赏
  • 举报
回复
//原始图片名称
string originalFilename = "c:\\222.jpg";
//生成的高质量图片名称
string strGoodFile = "c:\\222-small-good.jpg";
//生成的低质量图片名称
string strBadFile = "c:\\222-small-bad.jpg";
//缩小的倍数
int iScale = 3;

//从文件取得图片对象
System.Drawing.Image image = System.Drawing.Image.FromFile(originalFilename);
//取得图片大小
System.Drawing.Size size = new Size(image.Width / iScale , image.Height / iScale);
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(size.Width,size.Height);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空一下画布
g.Clear(Color.Blue);
//在指定位置画图
g.DrawImage(image, new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height),
new System.Drawing.Rectangle(0, 0, image.Width,image.Height),
System.Drawing.GraphicsUnit.Pixel);
//保存高清晰度的缩略图
bitmap.Save(strGoodFile, System.Drawing.Imaging.ImageFormat.Jpeg);
//取得原图像的普通缩略图
System.Drawing.Image img = image.GetThumbnailImage(image.Width / iScale, image.Height / iScale, null, IntPtr.Zero);
//保存普通缩略图
img.Save(strBadFile, System.Drawing.Imaging.ImageFormat.Jpeg);

g.Dispose();
MessageBox.Show("生成完毕");
panyee 2003-08-08
  • 打赏
  • 举报
回复
可以,只不过图像质量差一点

//取得原图像的普通缩略图
System.Drawing.Image img = image.GetThumbnailImage(image.Width / iScale, image.Height / iScale, null, IntPtr.Zero);
//保存普通缩略图
img.Save(strBadFile, System.Drawing.Imaging.ImageFormat.Jpeg);

还有个生成清晰版的方法,昨晚刚测出来的
ganenpingsohucom 2003-08-08
  • 打赏
  • 举报
回复
to szch,panyee:
这样能压缩大小吗?我试过40k大小的gif,缩略图还是40k阿
panyee 2003-08-07
  • 打赏
  • 举报
回复
Image newImg = img.GetThumbnailImage(200, 100,..);
取缩略图
szch 2003-08-07
  • 打赏
  • 举报
回复
PictureBox1.Scale(0.9)
szch 2003-08-07
  • 打赏
  • 举报
回复
PictureBox1.Scale(1.1)
ganenpingsohucom 2003-08-07
  • 打赏
  • 举报
回复
我的意思不仅仅是缩放,就是真正的压缩,比如说把一个1M的bmp的图片压缩后变成50K,这样的压缩不知道.net应该怎么做啊?
Napoleo 2003-07-10
  • 打赏
  • 举报
回复
题目写错了,应当是 缩放 而不是 压缩 ;
Napoleo 2003-07-10
  • 打赏
  • 举报
回复
Dim g1 As System.Drawing.Image
g1 = System.Drawing.Image.FromFile("tmp.jpg")
newWidth = 100
newHeight = 100
Dim g2 As New System.Drawing.Bitmap(gg, newWidth, newHeight)
g2.Save("aaa.jpg", System.Drawing.Imaging.ImageFormat.jpg)

---
VB.net里面可以直接保存为JPEG格式的;
pzping 2003-07-10
  • 打赏
  • 举报
回复
Dim g1 As System.Drawing.Image
g1 = System.Drawing.Image.FromFile("tmp.bmp")
newWidth = 100
newHeight = 100
Dim g2 As New System.Drawing.Bitmap(gg, newWidth, newHeight)
g2.Save("aaa.bmp", System.Drawing.Imaging.ImageFormat.Bmp)
RuiChen 2003-07-10
  • 打赏
  • 举报
回复
你可以定义GRAPHICS对象进行重画然后关联相应的PICTUREBOX的IMAGE,就可以保存了。
szch 2003-07-10
  • 打赏
  • 举报
回复
对控件设置就行了.
PictureBox1.sizemode=StretchImage
goody9807 2003-07-10
  • 打赏
  • 举报
回复
up

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧