Graphics绘制图像白边问题

问题描述

用Graphics绘制的图像有白边,什么原因?如何解决?代码如下。///<summary>///等比缩放///</summary>///<paramname="sourceStream">源图片流</param>///<paramname="savePath">保存路径</param>///<paramname="maxWidth">最大宽度</param>///<paramname="maxHeight">最大高度</param>///<paramname="quality">压缩质量0-100</param>publicstaticboolUniformScale(StreamsourceStream,stringsavePath,doublemaxWidth,doublemaxHeight,intquality=100){ImagesourceImage=Image.FromStream(sourceStream);if(sourceImage.Width<128||sourceImage.Height<128){returnfalse;}//符合要求,无需缩放,直接保存。if(maxWidth>=sourceImage.Width&&maxHeight>=sourceImage.Height){sourceImage.Save(savePath,ImageFormat.Jpeg);returntrue;}else{//计算宽高doublewidthScale=sourceImage.Width/maxWidth;doubleheightScale=sourceImage.Height/maxHeight;doublescale=Math.Max(widthScale,heightScale);intw=(int)(sourceImage.Width/scale);inth=(int)(sourceImage.Height/scale);ImagenewImage=newBitmap(w,h);Graphicsg=Graphics.FromImage(newImage);//设置质量g.InterpolationMode=InterpolationMode.HighQualityBicubic;g.SmoothingMode=SmoothingMode.HighQuality;//画图g.DrawImage(sourceImage,0,0,w,h);//释放g.Dispose();//关键质量控制ImageCodecInfo[]codecInfoList=ImageCodecInfo.GetImageEncoders();ImageCodecInfocodeInfo=codecInfoList.SingleOrDefault(p=>p.MimeType=="image/jpeg");EncoderParametersep=newEncoderParameters();ep.Param[0]=newEncoderParameter(System.Drawing.Imaging.Encoder.Quality,(long)quality);try{//保存if(codeInfo!=null){newImage.Save(savePath,codeInfo,ep);}else{newImage.Save(savePath,ImageFormat.Jpeg);}returntrue;}catch{returnfalse;}finally{sourceImage.Dispose();newImage.Dispose();}}}

解决方案

解决方案二:
附图,白边情况如下。
解决方案三:

解决方案四:
俺也遇到这个问题,楼主有解决了吗?
解决方案五:
哪里有白边?图片另存后打开,没发现哪里有白边啊

时间: 2024-12-31 21:20:57

Graphics绘制图像白边问题的相关文章

HTML5使用drawImage()方法绘制图像

 一.绘制图像 使用drawImage()方法绘制图像.绘图环境提供了该方法的三个不同版本. drawImage(image,x,y) : 在canvas中(x,y)处绘制图片. drawImage(image,x,y,width,height) : 在canvas中(x,y)处绘制图片,并将其缩放到指定的宽度和高度. drawImage(image,sourceX,sourceY,sourceWidth,sourceHeight,x,y,width,height) : 从图片中切割出一个矩形区

python使用PyGame绘制图像并保存为图片文件的方法

  本文实例讲述了python使用PyGame绘制图像并保存为图片文件的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ''' pg_draw_circle_save101.py draw a blue solid circle o

graphics-Intel HD Graphics 4600图像内存对象的支持

问题描述 Intel HD Graphics 4600图像内存对象的支持 Intel HD Graphics 4600 CL_DEVICE_IMAGE_SUPPORT是否支持图像内存对象? 解决方案 可以用Sisoft sandra或者everest看下

PHP中绘制图像的一些函数总结_php技巧

在PHP中绘制图像的函数非常丰富,包括点.线.各种几何图形等可以想象出来的平面图形,都可以通过PHP中提供的各种画图函数完成.我们在这里介绍一些常用的图像绘制,如果使用我们没有介绍过的函数,可以参考手册实现.另外,这些图形绘制函数都需要使用画布资源,并在画布中的位置通过坐标(原点是在画布左上角的起始位置,以像素为单位,沿着X轴正方向向右延伸,Y轴正方向向下延伸)决定,并且还可以通过函数的最后一个参数,设置每个图形的颜色.画布中的坐标系统如图所示. 一.函数图形区域填充imageFill() 通过

《Python和Pygame游戏开发指南》——2.19 用pygame.image.load()和blit()绘制图像

2.19 用pygame.image.load()和blit()绘制图像 如果你想要在屏幕上绘制简单的形状,绘制函数已经很好用了,但是,很多游戏都有图像(也叫作精灵,sprite).Pygame能够从PNG.JPG.GIF和BMP图像文件中,将图像加载到Surface对象上.这些图像文件格式的区别参见http://invpy.com/formats. 猫的图像存储在一个名为cat.png 的文件中.要加载这个文件的图像,将字符串'cat.png'传递给pygame.image.load()函数.

python使用PyGame绘制图像并保存为图片文件的方法_python

本文实例讲述了python使用PyGame绘制图像并保存为图片文件的方法.分享给大家供大家参考.具体实现方法如下: ''' pg_draw_circle_save101.py draw a blue solid circle on a white background save the drawing to an image file for result see http://prntscr.com/156wxi tested with Python 2.7 and PyGame 1.9.2

Painter利用鼠标绘制图像经验心得

给各位Painter软件的使用者们来详细的解析分享一下利用鼠标绘制图像的经验心得. 心得分享:   这是在photoshop中已经收拾好的一张线图 在图层中最好把线条单独提出来,虽然可能会用不到但为了长远着想还是提出来的好,如果不打算留的话请把线稿层的属性放'透明',具体做法请参照技法部分.   像这样给不同的部分在不同的层上随便用颜色平涂一次. 1.这一步只是为了选范围的,所以颜色可以随便填,只要你愿意即使给皮肤填成蓝色也无所谓,如果你的图够简练的话这一步就可以免了.在填的时候千万不要在线和线

我的opengl编程学习(一)(简介、绘制图像、三维观察、光照)

这是我第二次学习OPENGL,第一次学习是在大二的计算机图形学课堂上,那是对opengl只是走马观花,现在过了两年,我打算把opengl进行新一编完整而系统的学习,有三个目的:1.熟练掌握opengl编程,2从opegl的体系中加深对计算机图形渲染管线的整个体系的了解,作为深入学习GPU编程的进阶,3.制作好看的CG作品. 这里是我在学习<opengl programming guide fifth edition>过程的从头到尾的整个的学习笔记,放在这里,给自己做个以后的参考,也想与大家交流

java或SWT中如何绘制图像并保存为图片

问题描述 我们项目用的是RCP,SWT,java搞的现在有个功能实现:1:需要绘制一条直线(颜色,宽度,)界面控件是:宽度:1颜色:read生成取消2:用户填玩参数,点击确认,将绘制的这条直线保存在图片在本地,最后再将之前的直线图标替换成新生成的现在整体技术有了难点,比如,怎么去根据参数绘制,又如何把绘制出来的线保存成图片,谁有这方面的资料或者给段代码,小弟在这里感谢了!~在线等! 解决方案 解决方案二:可以考虑直接把canvas保存为图片如果你是根据用户输入的参数绘制的,也可以直接保存用户的输