用于解析 Photoshop PSD 文件的开源 Ruby 库
Ruby API,支持将 PSD 转换为画布、导出 PSD 数据、访问 PSD 切片数据以及访问 Ruby 应用程序内的 PSD 层。
PSD.rb 是一个轻量级、易于使用的开源 Ruby 库,使软件开发人员能够使用 Ruby 代码解析 Adobe Photoshop PSD 文件或提取元数据和其他可用信息。该库允许用户以可管理的树形结构处理 Photoshop 文档数据。开发 PSD.rb 的目的是为定期使用 Photoshop PSD 文件的开发人员提供更好的 PSD 抓取功能。
该库处理有关访问和打开文件以及查找所需数据并以操作形式检索它的所有主要功能。 PSD.rb 库非常易于处理,使开发人员能够以可管理的树形结构处理 Photoshop 文档,并搜索重要数据,例如文档大小、文档结构、文件夹名称和大小、文件夹的不透明度、文件夹可见性, 字体名称、字体颜色或大小、矢量蒙版数据、平面图像数据等等
PSD.rb 入门
安装 PSD.rb 的推荐方法是使用 RubyGems。请使用以下命令进行顺利安装。
通过 GitHub 安装 PSD.rb
$ gem install psd
使用 Ruby API 导出 PSD 数据
开源 PSD.rb 库使软件程序员能够使用 Ruby 命令轻松地从 PSD 文件中导出数据。在树结构中工作时,我们可以递归地将任何节点导出到一个对象,其中包括所有公共信息。也可以只用几行 Ruby 代码将 PSD 导出为平面图像文件。请记住在启用兼容模式的情况下保存,否则会产生空白图像
通过Ruby出口PSD数据
require 'fileutils'
require 'benchmark'
require './lib/psd'
file = ARGV[0] || 'examples/images/example.psd'
psd = PSD.new(file, parse_layer_images: true)
results = Benchmark.measure "Layer image exporting" do
psd.parse!
psd.tree.descendant_layers.each do |layer|
path = layer.path.split('/')[0...-1].join('/')
FileUtils.mkdir_p("output/#{path}")
layer.image.save_as_png "output/#{layer.path}.png"
end
end
puts Benchmark::CAPTION
puts results.to_s
使用 Ruby 将 PSD 转换为 Canvas
开源 PSD.rb 库提供了在 Ruby 应用程序中将 PSD 转换为画布的完整功能。该库支持解析导入的 PSD 并将其转换为画布对象。之后,您可以迭代 PSD 对象的图层并将对象轻松添加到画布中。在该订单之后,添加的对象就完成了。您还可以将画布导出为 PDF、SVG、PNG、PEG 等。
访问 PSD 切片数据
PSD.rb 库使软件开发人员能够直接在他们自己的应用程序中访问 PSD 切片。它还支持用几行 Ruby 代码获取文档中所有切片的数组。也可以按名称或 ID 搜索切片。该库还支持将切片导出为 PNG。
通过Ruby访问PSD个片段数据
require 'benchmark'
require './lib/psd'
require 'pp'
psd = nil
file = ARGV[0] || 'examples/images/example.psd'
results = Benchmark.measure "PSD parsing" do
psd = PSD.new(file)
psd.parse!
end
if psd.resources[:slices]
psd.resources[:slices].data.to_a.each do |slice|
pp slice
end
end
访问 PSD 图层数据
开放源码PSD。rb库使软件专业人员能够使用Ruby命令访问PSD层数据。 您可以很容易地使用Ruby代码得到一个名称和层面的维度。 开发者还可以访问其他类型的信息、如大小、颜色、字体等。
通过Ruby进入PSD层
//Get Name & Dimensions of a layer
psd.tree.descendant_layers.first.name
psd.tree.descendant_layers.first.width
//Get Other Layer Info
psd.tree.descendant_layers.first.text[:font]
# Returns
{:name=>"HelveticaNeue-Light",
:sizes=>[33.0],
:colors=>[[255, 19, 120, 98]],
:css=>
"font-family: \"HelveticaNeue-Light\", \"AdobeInvisFont\", \"MyriadPro-Regular\";\nfont-size: 33.0pt;\ncolor: rgba(19, 120, 98, 255);"}