使用mathematica制作的线框图可以变成透明图像然后导出到另一个网站吗? 这个问题的原因是我试图将线框适合结构。
答案 0 :(得分:2)
以下代码允许以透明背景导出到GIF(基于Mr.Wizard的代码):
g = Plot3D[{x^2 + y^2, -x^2 - y^2}, {x, -2, 2}, {y, -2, 2},
RegionFunction -> Function[{x, y, z}, x^2 + y^2 <= 4],
BoxRatios -> Automatic, PlotStyle -> None, Axes -> None,
Boxed -> False]
Export["wireframetest.gif", g, Background -> White,
"TransparentColor" -> White]
以下是它在Windows XP的标准“Windows Picture and Fax Viewer”中的显示方式:
请注意,在这种情况下,您必须指定Graphics3D
的背景(默认为White
)以及导出到GIF时将转换为透明色的颜色。因此,当目标图像应包含不透明的白色像素时,应该注意:Export
不仅要完全忽略原始图像的alpha通道,还要考虑相等的RGB值,这些值相差不到1 / 256.4971(在32位Windows XP上使用 Mathematica 8.0.1检查):
Rasterize[Graphics[{RGBColor[0, 0, 0], Disk[]}]] ===
Rasterize[Graphics[{RGBColor[0, 0, 1/256.4971], Disk[]}]]
(*=> True*)
处理这种情况的一种方法是为背景指定一种非标准颜色,这种颜色不会出现在图形的渲染版本中:
Export["wireframetest.gif", g,
Background -> RGBColor[1, 1, 0.996],
"TransparentColor" -> RGBColor[1, 1, 0.996]]
这种方法可以自动化。首先,我们可以获得出现在图像渲染版本中的所有颜色:
neededColors = Union[Flatten[Rasterize[g, "Data"], 1]]
在第二步,我们应该选择一个未出现在此列表中的颜色(以下是一个快速而肮脏的解决方案):
colorForBackground =
RGBColor @@ (First@
Complement[Permutations[Range[0, 255], {3}], neededColors]/255)
现在我们可以按如下方式使用它:
Export["wireframetest.gif", g, Background -> colorForBackground,
"TransparentColor" -> colorForBackground]
答案 1 :(得分:1)
我不确定我理解你的要求,但这可能就足够了。
关键位是PlotStyle -> None
和Background -> None
。
g = Plot3D[{x^2 + y^2, -x^2 - y^2}, {x, -2, 2}, {y, -2, 2},
RegionFunction -> Function[{x, y, z}, x^2 + y^2 <= 4],
BoxRatios -> Automatic, PlotStyle -> None, Axes -> None, Boxed -> False]
Export["wireframetest.png", g, Background -> None]
您也可以导出为GIF,但这实际上并不会将背景显示为透明。您必须在图形编辑器中将白色背景设置为透明色。 (这是在Mac OS X上测试的。)