Редактирование Photoshop текстовые слои PSD программно

program prjRead
  implicit none

  integer:: a
  real(8) :: b
  real(8) :: c
  character(18) :: header
  character(18) :: cAsString
  character(18) :: cWithOutStops

  open (123,file = "test.csv", DECIMAL='COMMA')

  read(123,*) header
  read(123,*) a, &
              b, &
              cAsString

  cWithOutStops = drop_stops(cAsString)

  read(cWithOutStops,*,decimal='comma')  c

  write(*,*) "gives c without decimal places"
  write(*,*) a,b,c

  write(*,*) "********************"
  write(*,*) "second try, the function drop_stops does what it 
promisses. If have to feed it with the right string"
  cAsString ="123.456,78"
  cWithOutStops = drop_stops(cAsString)
  read(cWithOutStops,*,decimal='comma')  c

  write(*,*) a,b,c

contains

FUNCTION drop_stops(instr) RESULT(outstr)
    CHARACTER(len=*), INTENT(in) :: instr
    CHARACTER(len=:), ALLOCATABLE :: outstr
    CHARACTER(len=1), DIMENSION(:), ALLOCATABLE :: str_array

    ALLOCATE(str_array(LEN_TRIM(instr)))
    str_array = TRANSFER(instr,str_array)
    str_array = PACK(str_array,str_array /= '.')
    ALLOCATE(CHARACTER(len=SIZE(str_array))::outstr)
    outstr = TRANSFER(str_array,outstr)
  END FUNCTION drop_stops
end program prjRead

Выходные данные

дают c без десятичных разрядов 5 56.670000000000002 123456.00000000000 ********************************************************* drop_stops делает то, что обещает. Если нужно указать правильную строку 5 56.670000000000002 123456.78000000000

Решение HighPerformanceMarks почти готово. Мне не хватает только умения проглотить число с одним куском при чтении. или я читаю 2 строки и объединяю их.

11
задан EvanK 12 May 2009 в 02:27
поделиться

5 ответов

Если вам не нравится использовать официально поддерживаемый AppleScript, JavaScript или VBScript, то есть также возможность сделать это на Python. Это объясняется в статье Создание сценариев Photoshop с помощью Python , в которой используется COM-интерфейс Photoshop.

Я не пробовал его, поэтому, если он вам не подходит: Если ваш текст сохраняется после преобразования в SVG , вы можете просто заменить его любым инструментом, который вам нравится. Затем преобразуйте его в PNG (например, с помощью inkscape --export-png = ... ).

6
ответ дан 3 December 2019 в 07:39
поделиться

Задумывались ли вы об открытии и редактировании изображения в GIMP? Он имеет очень хорошую поддержку PSD и может быть написан на нескольких языках.

Какой из них вы будете использовать, частично зависит от вашей платформы, интерфейс Perl не работал в Windows, насколько мне известно. Я считаю, что Scheme поддерживается на всех портах.

3
ответ дан 3 December 2019 в 07:39
поделиться

Единственный способ, который я могу придумать для автоматизации изменения текста внутри PSD, - это использовать подстановку на основе регулярных выражений.

  1. Создайте очень простую картинку в Photoshop, например, белый фон и текстовый слой, длина текста известна.
  2. Найдите в файле свой текст и с помощью шестнадцатеричного редактора найдите поблизости длину текста (который может быть или не быть частью формата файла).
  3. Попробуйте изменение текста, сначала на строку такой же длины, а затем на что-то более короткое / длинное.
  4. Открывать в Photoshop после каждого изменения, чтобы проверить, не поврежден ли файл.

Этот метод, если он применим, будет работать, только если рассматриваемый слой содержит известную строку, которая может быть заменена другим вашим значением. Обратите внимание, что я не знаю, сработает ли это, так как у меня нет Photoshop на этом компьютере, чтобы опробовать этот метод. Может, у вас получится заставить его работать?

Что касается конвертации в png, я в недоумении. Если заменяющий сценарий написан на Python, вы можете сделать это с помощью библиотеки изображений Python (PIL, , которая, похоже, поддерживает его ), но в противном случае вам, возможно, придется просто открыть Photoshop, чтобы выполнить преобразование. Это означает, что, вероятно, вообще не стоит менять текст прагматично.

3
ответ дан 3 December 2019 в 07:39
поделиться

Вы можете использовать сам Photoshop, чтобы сделать это с помощью OLE. Конечно, вам нужно будет установить Photoshop. Win32 :: OLE в Perl или аналогичный модуль в Python. См. http://www.adobe.com/devnet/photoshop/pdfs/PhotoshopScriptingGuide.pdf

2
ответ дан 3 December 2019 в 07:39
поделиться

Если вы собираетесь автоматизировать Photoshop, вам в значительной степени придется использовать собственные системы сценариев Photoshop. Я не думаю, что есть способ обойти это.

Если взглянуть на проблему с другой стороны, можно ли экспортировать из Photoshop в какой-нибудь другой формат, поддерживающий слои, например PNG, который редактируется ImageMagick?

1
ответ дан 3 December 2019 в 07:39
поделиться