ToString[r] <> ".png", Ras-6ren">
gpt4 book ai didi

image - 数学 : Transparent background with PNG

转载 作者:行者123 更新时间:2023-12-03 23:57:11 24 4
gpt4 key购买 nike

这很可能是 Mathematica 8.0.1 以及其他版本中的错误。让我们尝试以下操作:

Table[
Export[
"Res_" <> ToString[r] <> ".png", Rasterize[
Style[x^2 + y^2, 40],
Background -> None,
ImageResolution -> r
],
Background -> None],
{r, {20, 40, 100, 300, 400, 500, 600}}
]

这是我获得的屏幕截图:

Output

首先要注意的是最后两张图片的尺寸错误。这在某种程度上很好,因为我对 300 或更高的分辨率感到满意。现在看看这个:
in = 72;
G3D = Graphics3D[AspectRatio -> 0.925, Axes -> {True, True, True},
AxesEdge -> {{-1, -1}, {1, -1}, {-1, -1}}, AxesStyle -> Directive[10, Black],
BaseStyle -> {FontFamily -> "Arial", FontSize -> 12}, Boxed -> False,
BoxRatios -> {1, 1, 1}, LabelStyle -> Directive[Black],
ImagePadding -> All, ImageSize -> 5 in, PlotRange -> All,
PlotRangePadding -> None, TicksStyle -> Directive[10],
ViewPoint -> {2, -2, 2}, ViewVertical -> {0, 0, 1}, Background -> None
];
surf = Show[
Graphics3D[Sphere[{0, 0, 0}, 1], Background -> None,
AxesLabel -> {"x", "y", "z"}], Options[G3D]
];
fig = Show[surf, AxesStyle -> Directive[Opacity[0]],
Background -> None
];

我愿 Export fig 作为具有高分辨率透明背景的 png 文件。这是我对总是有问题的 Mathematica 进行的蹩脚尝试。
Table[
Export[
"Res_" <> ToString[r] <> ".png",
Rasterize[fig, ImageResolution -> r, Background -> None],
Background -> None
], {r, {20, 40, 100, 300, 400, 500}}
]

这是一些 png 文件的屏幕显示。

Images

所有这些都得到了预期的解决方案:)。但是我的透明背景怎么了?我已经通过我的代码多次指定 Background -> None然而这并不奏效。我环顾了网络,发现了这个:

http://forums.wolfram.com/mathgroup/archive/2009/Feb/msg00943.html

让我们使用这个想法。
bgImage = Image[ConstantArray[{0, 0, 0, 0}, Reverse[ImageDimensions[fig]]], 
ColorSpace -> "RGB"];
compImage = ImageCompose[bgImage, fig];
Table[Export["Res_" <> ToString[r] <> ".png",
Rasterize[compImage, ImageResolution -> r, Background -> None],
Background -> None], {r, {20, 40, 100, 300, 400, 500}}]

Images

没有背景!!! :) 太好了。但是我的图像大小发生了什么变化?分辨率在增加,但图像尺寸开始减小。我真的被这个问题困扰了太久了。我希望你们中的一个人可以对这个 Mathematica 错误有所了解,并且可以找到一个黑客来实现高分辨率的透明背景 PNG。如果您找到答案,请提及你们正在使用的 Mathematica 版本。

最佳答案

首先:不要使用ImageResolution导出时!大多数情况下,这个有问题的选项是无用的,并且不会达到人们的预期。它的作用类似于 ImageSize .

相反,使用 Magnify命令和 Magnification Style 的选项.他们做我们想从 ImageResolution 得到的东西!

现在关于问题第一部分中显示的行为的原因。是的,它发生了。是的,它依赖于机器。这是一个错误吗?是的,至少是一个很大的缺陷。它完全出乎意料吗?至于我 - 不是。

看来问题的根源在于图形的渲染确实是由前端制作的,而后者使用的是Cell的默认设置。将图形转换为光栅时。

In[1]:= Options[Cell, PageWidth]
Out[1]= {PageWidth -> WindowWidth}

让我们试着看看输出如何
Table[Rasterize[Style[x^2 + y^2, 40], Background -> None, 
ImageResolution -> r], {r, {300, 400, 500, 600}}]

看着不一样 运行时 笔记本窗口的大小:

enter image description here

可以看到输出对笔记本窗口大小的明显依赖性。

解决方法是通过 PageWidth直接到 Cell :
Rasterize[
Cell[BoxData@ToBoxes@Style[x^2 + y^2, 40], PageWidth -> Infinity],
ImageResolution -> 600]

enter image description here

附言此外。我知道的唯一案例 ImageResolution按预期工作是 PDF 导出 "AllowRasterization"->True :
First@ImportString[
ExportString[Plot3D[Sin[x + y^2], {x, -3, 3}, {y, -2, 2}], "PDF",
"AllowRasterization" -> True, ImageResolution -> 200], "PDF"]

但它不允许指定透明背景。

关于image - 数学 : Transparent background with PNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6326272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com