问题描述
请教C#asp.net如何读取文字图片(中文或英文大写或英文小写)精确宽度与高度的问题尝试了pathmeasurestingtexreader的几种方法都无法获取精确宽度与高度而示例网站都可以的先看示例网站请选中查看文字边距根据英文字母的含有的大小写不同图片的宽度与高度也不一样边距也比较精确网址http://draw.yifutu.com/ajaxpage/app/drawtextimageajax.aspx?operation=1&random=0.8987171404229826&text=%7B%22CMYK%22%3A%22%22%2C%22FileUrlInfo_ID%22%3A0%2C%22Height%22%3A0%2C%22IsShow%22%3Afalse%2C%22PropertyText%22%3A%22%E4%B8%AD%E6%96%87%E5%A7%93%E5%90%8D1%22%2C%22PropertyTextID%22%3A21%2C%22TemplateId%22%3A0%2C%22TemplateTransactionID%22%3A35719%2C%22Text%22%3A%22ggggg%22%2C%22TextAlign%22%3A1%2C%22TextFontColor%22%3A%22%23419346%22%2C%22TextFontSize%22%3A%2249%22%2C%22TextFontType%22%3A%22%E6%96%B9%E6%AD%A3%E7%BB%BC%E8%89%BA%E7%AE%80%E4%BD%93%22%2C%22TextID%22%3A0%2C%22TextImage%22%3Anull%2C%22TextLength%22%3A100%2C%22TextPropertyId%22%3A233123%2C%22TextStyle%22%3A2%2C%22TextX%22%3A302%2C%22TextY%22%3A59%2C%22Tilt%22%3A0%2C%22Type%22%3A1%2C%22Width%22%3A0%2C%22Wrap%22%3A0%2C%22TextFontTypeC%22%3A%22%E6%96%B9%E6%AD%A3%E7%BB%BC%E8%89%BA%E7%AE%80%E4%BD%93%22%7D
http://draw.yifutu.com/ajaxpage/app/drawtextimageajax.aspx?operation=1&random=1009.5162509560321526&text=%7B%22CMYK%22%3A%22%22%2C%22FileUrlInfo_ID%22%3A0%2C%22Height%22%3A0%2C%22IsShow%22%3Afalse%2C%22PropertyText%22%3A%22%E4%B8%AD%E6%96%87%E5%A7%93%E5%90%8D1%22%2C%22PropertyTextID%22%3A21%2C%22TemplateId%22%3A0%2C%22TemplateTransactionID%22%3A35719%2C%22Text%22%3A%22gggggGGG%22%2C%22TextAlign%22%3A1%2C%22TextFontColor%22%3A%22%23419346%22%2C%22TextFontSize%22%3A%2249%22%2C%22TextFontType%22%3A%22%E6%96%B9%E6%AD%A3%E7%BB%BC%E8%89%BA%E7%AE%80%E4%BD%93%22%2C%22TextID%22%3A0%2C%22TextImage%22%3Anull%2C%22TextLength%22%3A100%2C%22TextPropertyId%22%3A233123%2C%22TextStyle%22%3A2%2C%22TextX%22%3A312%2C%22TextY%22%3A62%2C%22Tilt%22%3A0%2C%22Type%22%3A1%2C%22Width%22%3A0%2C%22Wrap%22%3A0%2C%22TextFontTypeC%22%3A%22%E6%96%B9%E6%AD%A3%E7%BB%BC%E8%89%BA%E7%AE%80%E4%BD%93%22%7D
我们的代码usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Drawing;usingSystem.Drawing.Drawing2D;usingSystem.Drawing.Imaging;publicpartialclasstu:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){stringstr="轻轻去去去去去去";//Thisisaapple.floatemsize=20;Fontfont=newFont("Consolas",emsize,FontStyle.Regular);//Bitmapimage1=newBitmap(300,50);//Graphicsg1=Graphics.FromImage(image1);//SizeFsize1=g1.MeasureString(str,font);//intsize1width=(int)(Math.Ceiling(size1.Width));//intsize1height=(int)(Math.Ceiling(size1.Height));StringFormatformat=StringFormat.GenericDefault;GraphicsPathmyPath1=newGraphicsPath();myPath1.AddString(str,font.FontFamily,(int)(FontStyle.Regular),emsize,newPoint(0,0),format);RectangleFkkk=myPath1.GetBounds();Bitmapimage=newBitmap((int)(Math.Ceiling(kkk.Width)),(int)(Math.Ceiling(emsize)));Graphicsg=Graphics.FromImage(image);//g.FillRectangle(Brushes.White,50,0,image.Width,image.Height);g.Clear(Color.Transparent);GraphicsPathmyPath=newGraphicsPath();myPath.AddString(str,font.FontFamily,(int)(FontStyle.Regular),emsize,newPoint(-4,-4),format);g.SmoothingMode=SmoothingMode.HighQuality;g.PixelOffsetMode=PixelOffsetMode.HighQuality;g.FillPath(Brushes.Black,myPath);g.Save();Response.ContentType="image/png";Response.Clear();Response.BufferOutput=true;image.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Png);g.Dispose();image.Dispose();Response.Flush();}}
解决方案
解决方案二:
中文或英文大写或英文小写都应该测试下
解决方案三:
这项技术比较复杂,你可以查一“验证码识别”技术,如果都是你上面展示的这种规则的文字图片没有燥点的话还是很好办到的
解决方案四:
识别技术这玩意涉及到很多东西,怎么分切,怎么滤波都需要一些构思以前我也玩过,只能识别一些政府网站系统的验证码,因为他们都比较菜,哈
解决方案五:
这个跟识别技术有什么关系我是要生成精确宽度与高度的文字图片边距间隙要求比较小的是asp.net绘图不是什么识别
解决方案六:
请教C#asp.net如何读取文字图片(中文或英文大写或英文小写)精确宽度与高度的问题-------------------------------------------------
解决方案七:
引用4楼musocial的回复:
这个跟识别技术有什么关系我是要生成精确宽度与高度的文字图片边距间隙要求比较小的是asp.net绘图不是什么识别
请看这句myPath1.AddString(str,font.FontFamily,(int)(FontStyle.Regular),emsize,newPoint(0,0),format);RectangleFkkk=myPath1.GetBounds();这里是加载文字与字体样式后获取到Math.Ceiling(kkk.Widthkkk.height然户绘图Bitmapimage=newBitmap((int)(Math.Ceiling(kkk.Width)),(int)(Math.Ceiling(emsize)));我现在的情况是间隙比较大没有获取到精确的宽度与高度
解决方案八:
解决方案九:
这个技术其实很早就出来了,google的一图搜图就是这样的,你可以尝试去搜一下,用google搜吧,国内的比较少,国外的相关文档比较多一些。
解决方案十:
引用楼主musocial的回复:
请教C#asp.net如何读取文字图片(中文或英文大写或英文小写)精确宽度与高度的问题
目前来说,没有什么免费途径、现成的东西给你!你只能花钱去买服务。只要肯花钱,如果对方出现问题,你就可以走法律途径要求赔偿。自己做,不靠谱。
解决方案十一:
哦,我还以为你要识别任意的英文和中文文字呢?!!呵呵。原来是读取前端输出之后的宽、高像素值。这个东西用你那种代码吗?如果一定要用,那么你把背景色去掉,剩下的非背景的颜色的位置就能告诉你“左右上下”啊!但是用你那种代码,其结果,有什么意义吗?
解决方案十二:
我被前几楼给误导了。如果要区分“空白”其实很容易。去掉背景色,就可以在x方向上区分出一些连续的无色的分隔区域。
解决方案十三:
有的字体边距偏大,基本是正确的
解决方案十四:
引用10楼sp1234的回复:
哦,我还以为你要识别任意的英文和中文文字呢?!!呵呵。原来是读取前端输出之后的宽、高像素值。这个东西用你那种代码吗?如果一定要用,那么你把背景色去掉,剩下的非背景的颜色的位置就能告诉你“左右上下”啊!但是用你那种代码,其结果,有什么意义吗?
我做的功能是asp.net生成文字图片用本人的代码生成图片间隙比较大跟背景图片没有关系
解决方案十五:
引用12楼tcmakebest的回复:
有的字体边距偏大,基本是正确的
看我一楼发的案例和网址为什么人家可以实现生成的图片边距很精确
解决方案:
????????