请问下,我想将转出来的图像,放在svg图像的左上角,而且svg的图像大小与图像内容保持一样的大小,可以实现吗?
另外请问,在中国有代理商吗,
@prozkb,
你好。
我想这是可能的,但是 DWG 和 SVG 的大小不同。你可以从这个例子开始:
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(fileName))
{
CadRasterizationOptions cadRasterizationOptions = new CadRasterizationOptions();
cadRasterizationOptions.DrawType = CadDrawTypeMode.UseObjectColor;
SvgOptions svgOptions = new SvgOptions();
svgOptions.VectorRasterizationOptions = cadRasterizationOptions;
cadImage.Save(outPath, svgOptions);
}
我们没有本地中国支持人员。
如果你指的是中国的经销商,请在 Aspose.Purchase 类别中发帖,销售团队会帮助你。
非常感谢您的回复;
我想请问下,有没有控制生成图像大小的属性;
我现在有一个稍微复杂的dwg的图像,按照您的代码生成的svg图像,
在浏览器中观看的时候就特别大,浏览器的滑动滚轮就特别小;
我想只让生成的图像限制在比如width和height为1000内;
还有就是希望生成的图片是透明的;
有没有转svg的开发文档;
我只看到相关的只有
Convert DWG to SVG File Programmatically using C# (aspose.com)
并没有相关的属性介绍;
@prozkb,
如果有帮助,请尝试一下:
...
cadRasterizationOptions.PageHeight = 1000;
cadRasterizationOptions.PageWidth = 1000;
...
感谢,请问是否可以自适应呢,比如我的图像内容只有宽230,高280,然后不需要设置PageHeight /PageWidth 就可以自适应大小;
感谢,有没有针对转svg的net 开发文档
好的,谢谢 grinning:
请问,
1.aspose可以支持用C#,将两个svg的文件拼接在一起吗?
2.aspose支持离线操作吗?
您好,@prozkb ,
Aspose.Imaging 是一个独立的图形 API。它允许处理和编辑 SVG。以下是一些有用参考资料的链接:
这是一个代码示例,它加载一个 SVG 图像并在第一个图像上绘制另一个具有指定大小的 SVG 图像。
var backgroundSvgPath = @"svg-1.svg";
var overlaySvgPath = @"svg-2.svg";
var outputSvgPath = backgroundSvgPath + "-Output.svg";
using (var inputSvg = Image.Load(backgroundSvgPath) as SvgImage)
{
RasterImage rasterOverlay;
using (var overlay = Image.Load(overlaySvgPath) as VectorImage)
{
rasterOverlay = ToPng(overlay, new SvgRasterizationOptions
{
PageSize = new SizeF(30, 30),
});
}
var svgGraphics = new SvgGraphics2D(inputSvg);
using (rasterOverlay)
{
svgGraphics.DrawImage(rasterOverlay, new Point(0, 0));
}
using (var outputSvg = svgGraphics.EndRecording())
{
outputSvg.Save(outputSvgPath);
}
}
希望这能有所帮助。我们在这里回答您的问题!
柜子.7z (25.3 KB)
你好,我用下面的代码转了一个dxf的文件,但是转出来的太大了,没有控制输出图像大小的属性;
而且我想让转换后的svg图像被放置在左上角;
还有一个需求是,我想自定义视图的粗细怎么设置呢
static void Main(string[] args)
{
string inputFile = @"D:\CADPictures\Dxf\TV1003.dxf";
string outFile = @"D:\CADPictures\dxfConver\TV1003.svg";
try
{
// Load DXF file
using (Image image = Image.Load(inputFile))
{
// Create SVG options
var options = new Aspose.CAD.ImageOptions.SvgOptions();
// Save DXF as SVG
image.Save(outFile, options);
}
}
catch (Exception ex)
{
String Message = ex.StackTrace;
}
}
@prozkb,
请尝试通过以下选项设置尺寸:
...
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.PageWidth = 1000;
rasterizationOptions.PageHeight = 1000;
// this option could be used to decrease text width
rasterizationOptions.Quality.TextThicknessNormalization = true;
SvgOptions svgOptions = new Aspose.CAD.ImageOptions.SvgOptions();
svgOptions.VectorRasterizationOptions = rasterizationOptions;
...
线条的宽度取决于 DXF 及其设置方式(请同时附上 DXF 文件)。以下是如何使所有线条变细的示例:
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(fileName))
{
foreach (var entity in cadImage.Entities)
{
entity.LineWeight = 0;
}
foreach (Aspose.CAD.FileFormats.Cad.CadTables.CadLayerTable layer in cadImage.Layers)
{
layer.LineWeight = 0;
}
}
你好,我这样试下来好像不起作用;
线条并没有加粗,我还有一点就是希望转出来的svg的图像可以保留dxf图像里原有的颜色;
控制粗细的应该是strokeWidth,但是我不知道怎么用的
try
{
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.PageWidth = 1000;
rasterizationOptions.PageHeight = 1000;
// this option could be used to decrease text width
rasterizationOptions.Quality.TextThicknessNormalization = true;
SvgOptions svgOptions = new Aspose.CAD.ImageOptions.SvgOptions();
svgOptions.VectorRasterizationOptions = rasterizationOptions;
// Load DXF file
using (Image image = Image.Load(dxfFilePath))
{
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(dxfFilePath))
{
foreach (var entity in cadImage.Entities)
{
entity.LineWeight = 50;
}
foreach (Aspose.CAD.FileFormats.Cad.CadTables.CadLayerTable layer in cadImage.Layers)
{
layer.LineWeight = 50;
}
}
// Save DXF as SVG
image.Save(outFile, svgOptions);
}
}
catch (Exception ex)
{
String Message = ex.StackTrace;
}
@prozkb,
请测试以下示例:
short newWidth = 50;
// Load DXF file
using (CadImage cadImage = (CadImage)Aspose.CAD.Image.Load(fileName))
{
foreach (var entity in cadImage.Entities)
{
entity.LineWeight = newWidth;
if (entity.TypeName == CadEntityTypeName.INSERT)
{
CadInsertObject cadInsert = (CadInsertObject)entity;
SetLineWeight(cadImage, cadInsert, newWidth);
}
}
foreach (Aspose.CAD.FileFormats.Cad.CadTables.CadLayerTable layer in cadImage.Layers)
{
layer.LineWeight = newWidth;
}
CadRasterizationOptions rasterizationOptions = new CadRasterizationOptions();
rasterizationOptions.PageHeight = 1000;
rasterizationOptions.PageWidth = (int)(rasterizationOptions.PageHeight * cadImage.Width / cadImage.Height);
rasterizationOptions.DrawType = CadDrawTypeMode.UseObjectColor;
// this option could be used to decrease text width
rasterizationOptions.Quality.TextThicknessNormalization = true;
SvgOptions svgOptions = new Aspose.CAD.ImageOptions.SvgOptions();
svgOptions.VectorRasterizationOptions = rasterizationOptions;
// Save DXF as SVG
cadImage.Save("result.svg", svgOptions);
}
private static void SetLineWeight(CadImage cadImage, CadInsertObject cadInsert, short newWeight)
{
CadBlockEntity block = cadImage.BlockEntities[cadInsert.Name];
foreach (CadEntityBase blockEntity in block.Entities)
{
blockEntity.LineWeight = newWeight;
if (blockEntity.TypeName == CadEntityTypeName.INSERT)
{
SetLineWeight(cadImage, (CadInsertObject)blockEntity, newWeight);
}
}
}
一些附加说明:需要保留原始绘图的高度与宽度比以避免空白,并注意已应用保留颜色的选项。此外,我们需要在导出之前迭代 DXF 中的所有实体并更改它们的线宽(包括块内的实体和块内的块)。