我需要在Sketchup Ruby中的COLLADA导出后调整纹理图像文件的大小。
有没有办法从磁盘读取图像(PNG,JPG),调整它们大小并使用简单的Sketchup Ruby API将它们保存回磁盘?
我知道如何进行文件读/写,只是不知道“图像解码,调整大小,编码”-part。
我发现的大多数图像调整大小示例涉及一些图像处理库或gem,这在Sketchup ruby发行版中是不可用的。如果有一个可以使用我的SU Ruby插件轻松分发的可移植解决方案,那将会很不错。
答案 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=
可以得到你想要的东西。