Free Support Forum - aspose.com

求助,Visio图片想要转成PNG留有大量空白?


#1

image.png (12.1 KB)
如图,可否只保留红框中的椭圆,而不保留周围的空白?


#2

@Cindy.L

谢谢你的询问。

您是否愿意与我们分享您的源VISIO图以及示例代码段。我们将在我们的环境中测试场景并相应地解决它。


#3

以下是我的源代码,从一个目录中读取vsd图片,然后转成PNG图片,但是会把vsd图片背后的画布一并转出来,能否只把图形本身,也就椭圆转换成PNG而不要带多余的空白

        InputStream stream = new FileInputStream(vsdPath);
        Diagram vsdDiagram = new Diagram(stream);
        
        ImageSaveOptions options = new ImageSaveOptions(SaveFileFormat.PNG);

        options.setSaveForegroundPagesOnly(true);
       
        PageSize size = options.getPageSize();
        vsdDiagram.save(outPathPNG, options);

源vsd图片.zip (6.1 KB)


#4

@Cindy.L

感谢您分享所需信息。

为了只将形状转换为PNG图像,您可以使用Shape.toImage()方法。请检查以下代码段以及生成的输出:

com.aspose.diagram.Diagram diagram = new com.aspose.diagram.Diagram(dataDir + "1.vsd");
com.aspose.diagram.ImageSaveOptions options = new com.aspose.diagram.ImageSaveOptions(com.aspose.diagram.SaveFileFormat.PNG);
for (com.aspose.diagram.Shape shape: (Iterable<com.aspose.diagram.Shape>)diagram.getPages().get(0).getShapes())
{
 shape.toImage(dataDir + "Ellipse.png", options);
}

Ellipse.png (3.9 KB)

如有任何进一步的帮助,请随时告诉我们。


#5

您提供的方法的确可以把图形取出,但是我希望的效果是和Visio软件另存效果相同,也就是如果里面有多个图形,可以将多个图形一起另存到一张PNG图片中而没有白色画布,如附件PNG图片中红框圈出来的部分,我将VSDX图片也添加在zip包中,请您指导example.zip (27.0 KB)


#6

@Cindy.L

谢谢你回信。

我们已根据您的要求在我们的问题跟踪系统中记录了调查票据DIAGRAMJAVA-50641。我们将进一步检查该功能的可行性,并与您分享我们的反馈意见。请耐心等待我们。

我们对造成的不便很抱歉。


#8

请问如何才能看到调查票据的跟踪情况呢?


#9

@Cindy.L

感谢您给我们写信。

由于故障单已记录在我们的内部问题管理系统下,您将无法跟踪其状态。但是,只要我们有其他更新,我们会立即向您发布此论坛帖子中的票证解析状态。请多花点时间。

我们对造成的不便很抱歉。


#10

十分抱歉,想再咨询下,大量空白的产生,是由于我使用Diagram的方法不对?还是由于Diagram类本身有bug?还是因为它目前不支持去掉空白画布?


#11

十分抱歉,想再咨询下,大量空白的产生,是由于我使用Diagram的方法不对?还是由于Diagram类本身有bug?还是因为Diagram目前不支持去掉空白画布?


#12

@Cindy.L

谢谢你的询问。

正如我们之前分享的Shape.toImage()方法以及相应的生成输出。空白空白仍处于导出状态。似乎API在导出时不会在形状周围移除白色画布。调查仍在进行中,我们将在完成后立即分享一些反馈意见。

同时,如果您能够使用MS VISIO实现所需的输出,请与您分享吗?如果是,请分享导出的输出和步骤以生成它。它还可以帮助我们增加更多调查您的要求。


#13

我另存PNG图的方式是:File–>Save as–>PNG 图片,另存为PNG图片时,设置项均为默认


#14

@Cindy.L

我们通过使用MS VISIO导出形状来测试场景,结果与使用Shape.toImage()方法生成的Aspose.Diagram相同。为了您的参考,两个输出文件都已附加。

1_Aspose.Diagram.png (3.9 KB)
1_MSVISIO.png (3.3 KB)

如果您想获得具有透明背景的图像,请您澄清一下吗?如果您能与我们分享您想要的输出样本,将会很有帮助。我们将再次测试我们环境中的场景并相应地解决它。


#15

Image&Code.zip (38.8 KB)

十分感谢您的耐心回复,我将我的代码以及使用的源VSD图像分享给您,请您帮忙分析:
1.zip包中有我使用的图片、生成的图片以及我写的单元测试代码,详细说明如下:
AsposeDiagram-ImageSaveOptions文件夹中是我使用Aspose.Diagram的save方法以及ImageSaveOptions类保存出来的图片以及单元测试代码
Shape.toImage文件夹中是我使用Shape类生成的图片以及单元测试代码,我本地的测试结果是会对每个图形生成一张PNG图片,因此共生成三张PNG图片
MSVisio.PNG 是我用MS Visio保存出来的PNG图片,这张图片就是我想要的效果图
test1.vsdx 是我使用源VSD图片
2.我使用的aspose.Diagram版本:aspose-diagram-18.12.0-jdk16.jar
3.我使用的MS Visio版本:MicroSoft Visio Professional 2013

除了请您帮忙分析,还请您给我分享您使用aspose.Diagram类以及ImageSaveOptions类保存的源码


#16

@Cindy.L

感谢您分享所有资源。

考虑到您共享的详细信息,我们再次测试了该方案,并发现API无法以与MS Visio相同的方式将Diagram导出到PNG中。我们已更新先前记录的故障单的信息,并将进一步详细调查。一旦我们得到一些调查结果,我们一定会及时更新您。我们非常感谢您在这方面的合作和耐心。请多花点时间。

我们对造成的不便很抱歉。