class Object
Public Instance Methods
contentReport(psdFiles)
click to toggle source
Extract text content from PSD
# File bin/psdlens, line 133 def contentReport(psdFiles) textData = Array.new psdFiles.each do |psdFile| name = File.basename(psdFile) PSD.open(psdFile) do |psd| puts "\n[ #{name} ] Text Content =================================== \n\n" psd.layers.each do |layer| textRaw = layer.adjustments[:type] textString = textRaw.to_s() if textString == "" else textData.push("\n#{textString}\n") end end end textDataClean = textData.uniq textDataClean.each do |d| puts d end end end
fontReport(psdFiles)
click to toggle source
Show all used fonts
# File bin/psdlens, line 27 def fontReport(psdFiles) fontData = Array.new psdFiles.each do |psdFile| name = File.basename(psdFile) PSD.open(psdFile) do |psd| puts "\n[ #{name} ] Font used =================================== \n\n" psd.layers.each do |layer| fontRaw = layer.text fontString = fontRaw.to_s() fontstring = fontString.gsub!(':font=>{:name=>"', "spliter") fontstring = fontString.gsub!('", :sizes=>[', "spliter") fontArray = fontString.split("spliter") fontName = fontArray[1].to_s() if fontName == "" else fontData.push("* " + fontName) end end end fontDataClean = fontData.uniq fontDataClean.each do |d| puts d end end end
globalReport(psdFiles, base)
click to toggle source
Create json reports for all PSD files
# File bin/psdlens, line 12 def globalReport(psdFiles, base) psdFiles.each do |psdFile| name = File.basename(psdFile, ".psd") PSD.open(psdFile) do |psd| content = psd.tree.to_hash jsonContent = JSON.pretty_generate(content) file = File.join(base, "#{name}.json") File.open(file, "w") { |f| f.write(jsonContent) } puts "[create] #{file}" end end end
metaReport(psdFiles)
click to toggle source
# File bin/psdlens, line 157 def metaReport(psdFiles) fontData = Array.new psdFiles.each do |psdFile| name = File.basename(psdFile) PSD.open(psdFile) do |psd| puts "\n[ #{name} ] Meta report =================================== \n\n" psdWidth = psd.width psdHeight = psd.height psdLayers = psd.layers.size psdGroup = psd.folders.size psdMode = psd.header.mode_name psd.layers.each do |layer| fontRaw = layer.text fontString = fontRaw.to_s() fontArray = fontString.split(':font=>{:name=>"') fontFirstPart = fontArray[1].to_s() fontNameArray = fontFirstPart.split('", :sizes=>[') fontName = fontNameArray[0].to_s() if fontName == "" else fontData.push(fontName) end end fontDataClean = fontData.uniq psdFonts = fontDataClean.to_s().tr('[]""', '') puts "Document size : #{psdWidth}px x #{psdHeight}px" puts "Color mode : #{psdMode}" puts "Content : #{psdLayers} layers in #{psdGroup} groups" puts "Fonts : #{psdFonts}" end end end
styleReport(psdFiles)
click to toggle source
Extract text content from PSD and display font-size, font-family and color
# File bin/psdlens, line 94 def styleReport(psdFiles) textData = Array.new psdFiles.each do |psdFile| name = File.basename(psdFile) PSD.open(psdFile) do |psd| puts "\n[ #{name} ] Text Report =================================== \n\n" psd.layers.each do |layer| textRaw = layer.adjustments[:type] textString = textRaw.to_s() fontRaw = layer.text fontString = fontRaw.to_s() fontstring = fontString.gsub!(':font=>{:name=>"', "spliter") fontstring = fontString.gsub!('", :sizes=>[', "spliter") fontstring = fontString.gsub!('], :colors=>[', "spliter") fontstring = fontString.gsub!(';\ncolor: ', "spliter") fontstring = fontString.gsub!(';"}, :left=>', "spliter") fontArray = fontString.split("spliter") fontName = fontArray[1].to_s() fontSize = fontArray[2].to_s() fontColor = fontArray[4].to_s() if textString == "" else textData.push("#{fontName} | #{fontSize}px | #{fontColor}") end end end textDataClean = textData.uniq textDataClean.each do |d| puts d end end end
textReport(psdFiles)
click to toggle source
Extract text content from PSD and display font-size, font-family and color
# File bin/psdlens, line 56 def textReport(psdFiles) textData = Array.new psdFiles.each do |psdFile| name = File.basename(psdFile) PSD.open(psdFile) do |psd| puts "\n[ #{name} ] Text Report =================================== \n\n" psd.layers.each do |layer| textRaw = layer.adjustments[:type] textString = textRaw.to_s() fontRaw = layer.text fontString = fontRaw.to_s() fontstring = fontString.gsub!(':font=>{:name=>"', "spliter") fontstring = fontString.gsub!('", :sizes=>[', "spliter") fontstring = fontString.gsub!('], :colors=>[', "spliter") fontstring = fontString.gsub!(';\ncolor: ', "spliter") fontstring = fontString.gsub!(';"}, :left=>', "spliter") fontArray = fontString.split("spliter") fontName = fontArray[1].to_s() fontSize = fontArray[2].to_s() fontColor = fontArray[4].to_s() if textString == "" else textData.push("\n#{textString}\n=> #{fontName} | #{fontSize}px | #{fontColor}") end end end textDataClean = textData.uniq textDataClean.each do |d| puts d end end end