当前位置: 首页 > 编程语言 > C#

NovacodeDocxCreatesImageFromBitmap分享

时间:2023-04-11 12:03:29 C#

NovacodeDocxCreatesImageFromBitmapBackground我的项目很紧急,需要我迭代一个大的XML文件并返回一个Base64编码的图像。每个图像都必须插入到MSWord文档中,我使用的是DocX库。我正在将Base64字符串转换为位图,没有任何问题。问题对于我的生活,我似乎无法将位图放入Novacode.Image对象中,然后我可以将其插入到文档中。注意:我已经知道如何转换为System.Drawing.Image格式。让我伤心的是Novacode.Image格式(DocX)。如果我尝试投射la(Novacode.Image)somebitmap;我得到CannotcastexpressionoftypeImagetoBitmap。如果我尝试初始化一个新的Novacode.Image对象,我会得到CannotaccessinternalconstructorImagehere。使用C#、.NET4、FormsApp,喝很多咖啡。问题只有Novacode.Image对象可以通过库插入到MSWord文档中,那么我怎样才能在那里得到我的位图?在这一点上我很困惑,所以也许我只是错过了一些简单的东西。您必须使用DocX.AddImage()方法来创建Novacode.Image对象。按照以下5个步骤将图像添加到Word文档:将图像保存到内存流。通过调用AddImage()方法创建一个Novacode.Image对象。通过在步骤2中创建的Novacode.Image对象上调用CreatePicture()创建图片。设置图片的形状(如果需要)。将您的照片插入照片。以下示例显示了如何将图像插入到Word文档中:using(DocXdoc=DocX.Create(@"Example.docx"))System.Drawing.Image.FromFile(@"test.jpg");myImg.Save(ms,myImg.RawFormat);//将图片保存在内存流中。ms.Seek(0,SeekOrigin.Begin);新代码。图片img=doc.AddImage(ms);//创建图像.Paragraphp=doc.InsertParagraph("Hello",false);图片pic1=img.CreatePicture();//创建图片.pic1.SetPictureShape(BasicShapes.cube);//设置图片形状(如果需要)p.InsertPicture(pic1,0);//插入图片到paragraph.doc.Save();}}希望这可以帮助。多亏了Hans和Martin,我才能够以此为基础来确保大型图像文件(照片)始终适合页面。最大宽度和最大高度可以根据页面大小进行更改。使用(MemoryStreamms=newMemoryStream()){System.Drawing.ImagemyImg=System.Drawing.Image.FromFile(imageDirectory+i.FileName);双xScale=1;双yScale=1;双maxWidthInches=6.1;//适合页面的最大宽度doublemaxHeightInches=8.66;//适合页面的最大高度//标准化不同分辨率的水平和垂直比例doublehScale=((double)96/myImg.Horizo??ntalResolution);双vScale=((double)96/myImg.VerticalResolution);//需要缩放以适应x方向doubleimageWidthInches=myImg.Width/myImg.Horizo??ntalResolution;//以英寸为单位使用DPIif(imageWidthInches>maxWidthInches)xScale=maxWidthInches/imageWidthInches*hScale;//需要缩放以适应y方向doubleimageHeightInches=myImg.Height/myImg.VerticalResolution;如果(imageHeightInches>maxHeightInches)yScale=maxHeightInches/imageHeightInches*vScale;双finalScale=Math.Min(xScale,yScale);//使用两个比例中最小的一个来确保图片适合两个方向myImg.Save(ms,myImg.RawFormat);//将图片保存在内存流中。ms.Seek(0,SeekOrigin.Begin);Novacode.Imageimg=document.AddImage(ms);//创建图像。段落p=document.InsertParagraph();图片pic=img.CreatePicture();//创建图片。//将最终比例应用于高度和宽度doublewidth=Math.Round((double)myImg.Width*finalScale);双高度=Math.Round((double)myImg.Height*finalScale);pic.Width=(int)(width);pic.Height=(int)(height);p.InsertPicture(图片);//在段落中插入图片。}谢谢汉斯我在根据DPI插入错误大小的图像时遇到问题,所以我使用它根据DPI缩放图像,96dpi似乎是word中缩放图像的基础:以上是C#学习教程:NovacodeDocxCreateImagefromBitmap全部内容,如果对你有用,需要进一步了解C#学习教程,希望你多多关注—using(MemoryStreamms=newMemoryStream()){System.Drawing.ImagemyImg=System.Drawing.Image.FromFile(路径);//计算水平和垂直比例floatHscale=((float)96/myImg.Horizo??ntalResolution);floatVscale=((float)96/myImg.VerticalResolution);myImg.Save(ms,myImg.RawFormat);//将你的图片保存在内存流中。多发性硬化症。寻找(0,SeekOrigin。开始);新代码。图片img=提案。添加图像(毫秒);//创建图像。图片pic1=img.创建图片();//创建图片。//将比例应用于高度和宽度pic1.Height=(int)(myImg.Height*Hscale);pic1.Width=(int)(myImg.Width*Vscale);a.InsertPicture(pic1,0);//在段落中插入图片。}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢