使用C#将SVG转换为PNG

时间:2020-03-05 18:52:11  来源:igfitidea点击:

我一直在尝试使用C#将SVG图像转换为PNG,而不必编写太多代码。谁能推荐这样做的库或者示例代码?

解决方案

回答

我们可以调用inkscape的命令行版本来执行此操作:

http://harriyott.com/2008/05/converting-svg-images-to-png-in-c.aspx

还有一个CSVG呈现引擎,主要设计为允许SVG文件在Codeplex上的网络上使用,如果这是问题,它可能会满足需求:

原始项目
http://www.codeplex.com/svg

具有修复功能和更多活动的叉:(已添加7/2013)
https://github.com/vvvv/SVG

回答

我为此使用蜡染。完整的Delphi代码:

procedure ExecNewProcess(ProgramName : String; Wait: Boolean);
var
  StartInfo : TStartupInfo;
  ProcInfo : TProcessInformation;
  CreateOK : Boolean;
begin
  FillChar(StartInfo, SizeOf(TStartupInfo), #0);
  FillChar(ProcInfo, SizeOf(TProcessInformation), #0);
  StartInfo.cb := SizeOf(TStartupInfo);
  CreateOK := CreateProcess(nil, PChar(ProgramName), nil, nil, False,
              CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS,
              nil, nil, StartInfo, ProcInfo);
  if CreateOK then begin
    //may or may not be needed. Usually wait for child processes
    if Wait then
      WaitForSingleObject(ProcInfo.hProcess, INFINITE);
  end else
    ShowMessage('Unable to run ' + ProgramName);

  CloseHandle(ProcInfo.hProcess);
  CloseHandle(ProcInfo.hThread);
end;

procedure ConvertSVGtoPNG(aFilename: String);
const
  ExecLine = 'c:\windows\system32\java.exe -jar C:\Apps\batik-1.7\batik-rasterizer.jar ';
begin
  ExecNewProcess(ExecLine + aFilename, True);
end;

回答

我们可以为此使用altsoft xml2pdf lib