ExportString可以导出EMF或GIF吗?在此演示中,streamoutput.emf被弄乱了:

Quiet[DeleteFile["C:\\Temp\\thisworks.emf"]];
Quiet[DeleteFile["C:\\Temp\\streamoutput.emf"]];

graphic = Graphics[{Thick, Red, Circle[{#, 0}] & /@ Range[4],
    Black, Dashed, Line[{{0, 0}, {5, 0}}]}];
Export["C:\\Temp\\thisworks.emf", graphic, "EMF"];

file = ExportString[graphic, "EMF"];
stream = OpenWrite["C:\\Temp\\streamoutput.emf", BinaryFormat -> True];
Write[stream, file];
Close[stream];

如果ExportString有效,我也许可以使用它通过NETLink传输EMF,例如
kernel.Compute("ExportString[Graphics[Rectangle[]], \"EMF\"]");
File.WriteAllText("C:\\Temp\\output.emf", kernel.Result.ToString());

附录

得到了工作。
kernel.Compute("ExportString[Graphics[Rectangle[]],{\"Base64\",\"EMF\"}]");
byte[] decodedBytes = Convert.FromBase64String(kernel.Result.ToString());
File.WriteAllBytes("C:\\Temp\\output.emf", decodedBytes);

最佳答案

从外观上看,Write在写入file时包含字符串stream的引号,因此输出文件以类似于"GIF....的开头,而不仅仅是GIF...。当使用BinaryWrite而不是Write时,它确实可以工作。例如

file = ExportString[graphic, "GIF"];
stream = OpenWrite["streamoutput.gif", BinaryFormat -> True];
BinaryWrite[stream, file];
Close[stream];
Import["streamoutput.gif"]

产生

因此,ExportString至少会为GIF生成有效的字符串。我没有 window ,所以无法测试EMF。

关于wolfram-mathematica - 使用ExportString转换图形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7755810/

10-11 06:16