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