社区
C#
帖子详情
winform按比例压缩图片
西无
2014-08-10 12:40:53
我想要在窗体中选择了图片后不管图片多大都能按比例压缩成我指定的大小然后再转换成二进制数据存到数据库中,但是不知道怎么弄,网上找到的代码能实现转换和存入,就是压缩这块只能单纯切割图片大小,不能按比例压缩。。嗯,你们应该能理解单纯切割和按比例压缩的区别吧?!
...全文
300
5
打赏
收藏
winform按比例压缩图片
我想要在窗体中选择了图片后不管图片多大都能按比例压缩成我指定的大小然后再转换成二进制数据存到数据库中,但是不知道怎么弄,网上找到的代码能实现转换和存入,就是压缩这块只能单纯切割图片大小,不能按比例压缩。。嗯,你们应该能理解单纯切割和按比例压缩的区别吧?!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
於黾
2014-08-11
打赏
举报
回复
有拉伸的方法,执行一下就行了
ZhongGuanYao
2014-08-11
打赏
举报
回复
上面的要求有两个:1)固定的大小 2)图片按比例缩小或扩大 固定的大小存在三种情况:高>宽 高<宽 高=宽 添加的图片也存在三种情况:高>宽 高<宽 高=宽 解决方法是比较固定大小的宽高比例和图片宽高比例 //image为源图片,w为固定的宽,h为固定的高 private Image GetSizeImage(Image image, int w, int h) { double pCtrl = (double)w / (double)h;//固定的宽高比例 double pImg = (double)image.Width / (double)image.Height;//图片宽高比例 Image newImage; if (pCtrl > pImg) { if (h < image.Height) { newImage = drawImage(image, (int)(h * pImg), h); } else { newImage = drawImage(image, image.Width, image.Height); } } else if (pCtrl < pImg) { if (image.Width > w) { newImage = drawImage(image, w, (int)(w / pImg)); } else { newImage = drawImage(image, image.Width, image.Height); } } else { if (image.Width > w) { newImage = drawImage(image,w, h); } else { newImage = drawImage(image, image.Width, image.Height); } } return newImage ; } private Image drawImage(Image sourceImage, int width, int height) { Image bitmap = new Bitmap(width, height); Graphics img = Graphics.FromImage(bitmap); img.CompositingQuality = CompositingQuality.HighQuality; img.SmoothingMode = SmoothingMode.HighQuality; img.InterpolationMode = InterpolationMode.High; img.DrawImage(sourceImage, new Rectangle(0, 0, width, height)); return bitmap ; }
xxhhl_2238677164
2014-08-11
打赏
举报
回复
上传并按比例生成高清略缩图图片 //按钮上传事件调用生成略缩图程序 protected void btnUpload_Click(object sender, EventArgs e) { if (FileUploadImage.PostedFile.FileName != "") { //定义上传路径(在当前目录下的uploadfile文件下) string uploadpath = this.Server.MapPath("uploadfile"); //取得文件名 string tmpfilename = FileUploadImage.PostedFile.FileName; //文件名 filename = tmpfilename.Substring(tmpfilename.LastIndexOf("\\") + 1); //原文件的保存路径 string fileSavePath = uploadpath + "\\" + filename; //保存原图片 FileUploadImage.SaveAs(fileSavePath); //调用生成缩略图程序,生成缩略图及生成写字的图片 this.toImage(FileUploadImage.PostedFile.InputStream, uploadpath, filename); //求取后缀名 string suffix = filename.Substring(filename.LastIndexOf(".")); //显示图片 //分别为原图片/写字的图片(多一个w)/缩略图(多一个x) this.imgshow.ImageUrl = "~/uploadfile/" + filename; this.imgpri.ImageUrl = "~/uploadfile/" + filename.Replace(suffix, "w" + suffix); this.imgSmall.ImageUrl = "~/uploadfile/" + filename.Replace(suffix, "x" + suffix); //显示图像控件 this.imgshow.Visible = true; this.imgpri.Visible = true; this.imgSmall.Visible = true; } } //生成略缩图程序 private void toImage(Stream myStream, string uploadPath, string picName) { //取得后缀名 string suffix = picName.Substring(picName.LastIndexOf(".")); //缩略图的保存路径 string fileXltPath = uploadPath + "\\" + picName.Replace(suffix, "x" + suffix); //写字图的保存路径 string fileXztPath = uploadPath + "\\" + picName.Replace(suffix, "w" + suffix); //创建一个图像对象取得上传图片对象 System.Drawing.Image myImage = System.Drawing.Image.FromStream(myStream, false); //对绘制前的图片产生一个缩略图(原图片一半大小) System.Drawing.Image thumbImage = myImage.GetThumbnailImage(myImage.Size.Width / 2, myImage.Size.Height / 2, null, System.IntPtr.Zero); //保存缩略图 thumbImage.Save(fileXltPath, this.getImageFormat(suffix)); //关闭缩略图对象 thumbImage.Dispose(); System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(myImage); g.DrawImage(myImage, 0, 0, myImage.Size.Width, myImage.Size.Height); //选择字体及字体大小 System.Drawing.Font f = new Font("隶书", 40); //定义字体颜色 System.Drawing.Brush b = new SolidBrush(System.Drawing.Color.Red); //开始绘制,根据上述两种设定,添加绘制的上左位置 g.DrawString("远大宏图", f, b, 10, 10); //关闭绘制对象 g.Dispose(); //保存绘制后上传图片 myImage.Save(fileXztPath, myImage.RawFormat); //关闭图片对象 myImage.Dispose(); }//CodeGo.net/ // 根据图片的后缀名,返回要保存的图片格式 private System.Drawing.Imaging.ImageFormat getImageFormat(string suffix) { System.Drawing.Imaging.ImageFormat myFormat; switch (suffix.ToLower()) { case ".bmp": myFormat = System.Drawing.Imaging.ImageFormat.Bmp; break; case ".emf": myFormat = System.Drawing.Imaging.ImageFormat.Emf; break; case ".exif": myFormat = System.Drawing.Imaging.ImageFormat.Exif; break; case ".gif": myFormat = System.Drawing.Imaging.ImageFormat.Gif; break; case ".icon": myFormat = System.Drawing.Imaging.ImageFormat.Icon; break; case ".jpeg": case ".jpg": myFormat = System.Drawing.Imaging.ImageFormat.Jpeg; break; case ".png": myFormat = System.Drawing.Imaging.ImageFormat.Png; break; case ".tiff": myFormat = System.Drawing.Imaging.ImageFormat.Tiff; break; case ".wmf": myFormat = System.Drawing.Imaging.ImageFormat.Wmf; break; default: myFormat = System.Drawing.Imaging.ImageFormat.MemoryBmp; break; } return (myFormat);
wangnaisheng
2014-08-10
打赏
举报
回复
http://blog.sina.com.cn/s/blog_6427a6b50101el7v.html
yycec
2014-08-10
打赏
举报
回复
根据短边的目标尺寸/源尺寸比,计算长边的目标尺寸,按计算后的目标尺寸压缩即可
C#
winform
压缩
图片
不变形和变形处理
除了
压缩
图片
,我们还可能需要处理
图片
的变形问题。变形通常发生在图像被拉伸或
压缩
以适应不匹配的尺寸时。使用高质量的插值模式(如InterpolationMode.HighQualityBicubic)可以帮助减少这种现象,但并不能完全避免...
winform
图片
加水印文字和水印
图片
总的来说,这个
WinForm
应用提供了一个方便的工具,可以对
图片
进行多种操作,如加水印(文字和
图片
)、等
比例
缩放和
压缩
,这对于日常需要处理
图片
的工作非常实用。通过理解并应用GDI+的图形处理技术,开发者可以...
Winform
图片
拖拽移动缩放
同时,我们还需要考虑到
图片
的
比例
,以防止拉伸或
压缩
原始图像。 为了实现更流畅的缩放体验,可以使用双缓冲技术,避免在缩放过程中出现闪烁。通过创建一个临时的Bitmap对象,将PictureBox的内容绘制到这个Bitmap上...
基于C# WPF 【批量缩略图/
压缩
】工具 支持拖拽
自己用C#写的一个 WPF工具、...可以设置
压缩
比例
、处理方式、宽高限制啥的。 在你需要批量缩略图处理、或者批量
图片
压缩
的需求时还是蛮起作用。 想直接使用的该工具的话 debug目录下有编译后的直接使用、 自己生成也行
winform
测试
如果图像大于控件,则不会拉伸
图片
,而是保持原始
比例
显示。 #### PasswordChar 属性 **知识点概述:** PasswordChar 属性用于指定在文本框中输入密码时显示的字符。 **知识点详情:** - **判断题**:正确。...
C#
111,092
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章