0

在 Sketchup Ruby 中导出 COLLADA 后,我需要调整纹理图像文件的大小。

有没有办法使用普通的 Sketchup Ruby API 从磁盘读取图像(PNG、JPG),调整它们的大小并将它们保存回磁盘?

我知道如何读取/写入文件,只是不知道“图像解码、调整大小、编码”部分。

我发现的大多数图像调整大小示例都涉及一些在 Sketchup ruby​​ 发行版中不可用的图像处理库或 gem。如果有一个易于使用我的 SU Ruby 插件分发的便携式解决方案,那就太好了。

4

2 回答 2

0

SketchUp Ruby API 不包含直接操作图像的方法。

您可以在使用纹理的模型中创建材质,而不仅仅是加载图像资源。

您可能可以使用一种方法:Material.write_thumbnail(SU8M1+),根据您的描述,您可以迭代模型中的材料并导出缩略图。

但是,该方法有一个非常烦人的限制:

Material.write_thumbnail具有在某些情况下限制其可用性的行为。

如果您指定的尺寸等于或大于原件的宽度或高度,则该方法将失败。换句话说,分辨率参数必须比原始纹理的长度或宽度的最小单位小 1px。

这会产生宽高比大的纹理问题。如果您想生成最大 128x128px 的缩略图,并且您为其生成缩略图的材质具有 64x512px 的纹理,那么它会失败。对于给定的纹理,缩略图的最大尺寸为 63 像素(比最小尺寸小 1 像素。)——导致缩略图为 8×63。

出于这个原因,该方法应该具有理想的缩略图宽度和高度,以便真正可用。唉。希望这将在以后的版本中得到改进。

(有关 SketchUp 中材料的更多信息:http ://www.thomthom.net/thoughts/2012/03/the-secrets-of-sketchups-materials/#material-thumbnails )

要在开发 SketchUp 插件时真正控制图像,您确实需要使用第三方库。

你可以看看 Aerilius 在这方面做了很多工作的插件“Texture Resizer”。http://sketchucation.com/forums/viewtopic.php?f=323&t=40720#p360679

于 2013-01-20T16:39:00.383 回答
-1

看来,如果您在这里查看http://www.sketchup.com/intl/en/developer/docs/ourdoc/imageheight=,这些方法width=应该可以满足您的需求。

于 2013-01-11T18:56:42.400 回答