在SU Ruby中调整纹理图像的大小

时间:2013-01-11 17:02:18

标签: ruby sketchup

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

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

我知道如何进行文件读/写,只是不知道“图像解码,调整大小,编码”-part。

我发现的大多数图像调整大小示例涉及一些图像处理库或gem,这在Sketchup ruby​​发行版中是不可用的。如果有一个可以使用我的SU Ruby插件轻松分发的可移植解决方案,那将会很不错。

2 个答案:

答案 0 :(得分:0)

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

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

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

然而,该方法有一个非常恼人的限制:

  

Material.write_thumbnail的行为会限制其可用性   一些场景。

     

如果您指定的尺寸等于或大于宽度或   原始的高度,然后方法失败。换句话说,   resolution参数必须比最小单位小1px   要么是原始纹理的长度还是宽度。

     

这会产生纹理问题,宽度之间的比例很大   和高度。如果要生成最大128x128px的缩略图   并且您生成缩略图的材质具有纹理   64x512px然后它失败了。至于给定纹理的最大尺寸   缩略图将是63px(比最小尺寸小1px。) -   导致缩略图为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

答案 1 :(得分:-1)

看起来如果你看http://www.sketchup.com/intl/en/developer/docs/ourdoc/image,方法height=width=可以得到你想要的东西。