2015-06-26 7 views
-1

Мы делаем игру викторины. У нас есть банк вопросов в электронной таблице Google Диска. У нас есть дизайнер, который сделал общий дизайн для карточек вопросов в Photoshop.Есть ли сценарий, который может передавать текст из файла excel в программу разработки Adobe?

Теперь, можем ли мы как-то передать вопросы с соответствующими ответами на этот дизайн через какой-либо скрипт, код или любой другой автоматизированный процесс?

Я знаю, что есть вещь, называемая PhotoshopScript, может ли это стоило взглянуть более внимательно?

+0

IF Photoshop использует vb для написания скриптов, тогда да, вы можете добавить ссылку на dll Excel и автоматизировать его .. его довольно легко .. не знаю, жестко, если Photoshop использует vb ... – sharkyenergy

+0

Photoshop scripting поставляется в трех вариантах; Javascript (extendscript), applescript и в меньшей степени визуальный базовый. Даже в javascript, который вы можете читать и писать из csv, возможно, не совсем то, что вам нужно, но это можно сделать. –

+0

Как насчет того, чтобы показать нам, как выглядит шаблон вопроса - даже если есть только JPEG? И скажите нам, находитесь ли вы в Windows или Mac. –

ответ

0

Да, это можно сделать. Образец - это видео, которое делает что-то подобное: https://www.youtube.com/watch?v=4SJxl4vAbqI

вы должны быть в состоянии сделать это в соответствии с этим видео. Сценарий фактически выполняется в Excel, который позволяет получить доступ к Photoshop через api-вызов. Нажмите Alt + F11 в Excel, чтобы открыть интерфейс программирования.

0

У меня было немного времени для себя, поэтому я быстро написал основную структуру того, что вам может понадобиться, загружает данные из (локального) csv и превращает его в текст в Photoshop. Этого достаточно, чтобы вы начали, даже если это только один вопрос.

CSV выглядит следующим образом: 1 Какое настоящее имя Гвен Стефани? Боб Gwendoline Stefani Gwen Stefani Renée Гвен Стейси C

photoshop_script выглядит следующим образом:

var wordData = "pop_quiz.csv"; 
var dataPath = "C:\\temp"; 
var myStr = readIt(dataPath, wordData); 
var quizArr = myStr.split("\t"); 
var question = "Question " + quizArr[0] + "\n" + quizArr[1]; 
var choice = "A: " + quizArr[2] + "\nB: " + quizArr[3] + "\nC: " + quizArr[4] + "\nD: " + quizArr[5]; 
var answer = "Answer: " + quizArr[6]; 


// create a document to work with 
var docRef = app.documents.add(300, 150, 72, "Quiz Question"); 
var srcDoc = app.activeDocument; 

// adjust text because photoshop dones 
// old school new lines 
question = replaceNewLine(question); 
choice = replaceNewLine(choice); 


// write question as photoshop text 
createText("Arial-BoldMT", 12.0, 0,0,0, question, 25, 15); 
createText("Arial-BoldMT", 10.0, 0,0,0, choice, 25, 50); 
createText("Arial-BoldMT", 8.0, 128,128,128, answer, 25, 140); 

//alert(question); 
//alert(choice); 
//alert("Answer: " + answer); 

// function REPLACE NEWLINE (str) :replaces "\n" with "\r" 
// ---------------------------------------------------------------- 
function replaceNewLine(str) 
{ 
    return str.replace(/(\n)/gm,"\r"); //replace newline 
} 

// function READ IT (path, filename) :returns string 
// ---------------------------------------------------------------- 
function readIt(inPath, inFile) 
{ 
    var theFile = new File(inPath + "/" + inFile); 

    //read in file 
    var words = ""; 
    var textFile = new File(theFile); 
    textFile.open('r'); 

    while(!textFile.eof) 
    { 
     var line = textFile.readln(); 
     if (line != null && line.length >0) 
     //if (line != null) // reads it as is 
     { 
     words += line + "\n"; 
     } 

    } 
    textFile.close(); 

    // return string 
    return words 
} 



// function CREATE TEXT(typeface, size, R, G, B, text content, text X pos, text Y pos) 
// -------------------------------------------------------- 
function createText(fface, size, colR, colG, colB, content, tX, tY) 
{ 

    // Add a new layer in the new document 
    var artLayerRef = srcDoc.artLayers.add() 

    // Specify that the layer is a text layer 
    artLayerRef.kind = LayerKind.TEXT 

    //This section defines the color of the hello world text 
    textColor = new SolidColor(); 
    textColor.rgb.red = colR; 
    textColor.rgb.green = colG; 
    textColor.rgb.blue = colB; 

    //Get a reference to the text item so that we can add the text and format it a bit 
    textItemRef = artLayerRef.textItem 
    textItemRef.font = fface; 
    textItemRef.contents = content; 
    textItemRef.color = textColor; 
    textItemRef.size = size 
    textItemRef.position = new Array(tX, tY) //pixels from the left, pixels from the top 
} 
0

Я довольно уверен, что я не хотел бы попробовать это с Photoshop сценариев, но будет идти на ImageMagick, который установлен на большинстве Linux дистрибутивами, и доступен для Apple OS X и всех хороших ОС (и Windows) бесплатно от here.

Допустим, у вас есть PNG или JPEG или PSD, версия вашей карты, как это в файле с именем card.png

enter image description here

Затем вы можете добавить текст к ней, как это, или на рабочем столе или как PHP скрипт, если ваш тест онлайн, и вы хотите, чтобы генерировать вопрос карты динамически:

convert card.png     \ 
    -gravity center     \ 
    -fill fuchsia     \ 
    -font BradleyHandB    \ 
    -pointsize 48     \ 
    -background none     \ 
    label:'Q: Is this a question?\nA: If this is an answer.' \ 
-compose srcover -composite out.jpg 

enter image description here

Если карта вашего дизайнера является файлом PSD для Photoshop, вы должны использовать card.psd[0] вместо card.png в приведенной выше команде, так как слой [0] файла PSD представляет собой полное сплющенное изображение.

Я хотел бы предложить вам экспорт ваши вопросы Excel в файл CSV (значения, разделенные запятыми), а затем это довольно просто читать вопросы и ответы в небольшой цикл, чтобы сделать карты.

Так, скажем, вы экспортировали файл под названием quiz.cv из Excel, который выглядел так:

Is this a question? If this is an answer. 
What was Walt Disney's first name? Walt. 
In English, what do the initials of the car manufacturer BMW stand for? Bavarian Motor Works 

затем на Linux, вы могли бы сделать что-то вроде этого

#!/bin/bash 
i=0 
while IFS=$'\n' read question; do 
    convert card.png    \ 
    -gravity center     \ 
    -fill fuchsia     \ 
    -font BradleyHandB    \ 
    -pointsize 48     \ 
    -background none     \ 
    label:'$question' \ 
-compose srcover -composite card${i}.jpg 
((i++)) 
done < quiz.csv 

, который даст вам card0.jpg, card1.jpg, card2.jpg и т. Д.

Конечно, возможны другие цвета, шрифты, макеты, размеры, как это версия скрипта Windows. Это просто зависит от того, что вы хотите.

 Смежные вопросы

  • Нет связанных вопросов^_^