2015-02-19 7 views
0

Мы имеем следующего СДП https://app.box.com/s/rf514j3wnic1xkt6y1q3b5qnk0zds2rlЭкспорт множественного PSD слой файл PNG, применяя оттенок эффект к каждому слою

Это прозрачная PSD с одним базовым слоем для кольцевого металла.

И дополнительный слой для каждого отдельного камня.

Что-то вроде https://app.box.com/s/i8lhshbl27pvjmmczjq2bhla4mzw9cwn и это

Мы хотим, чтобы иметь возможность применить оттенок к каждому отдельному слою камня на основе пользовательского ввода и экспортировать итоговое изображение как PNG файл. Предоставить пользователям возможность создавать кольцо по своему вкусу.

Теперь я пытаюсь выяснить, что является лучшим способом для достижения этой функциональности?

Мы хотели бы, чтобы изображение сгенерировалось на стороне сервера в .net, чтобы его можно было совместно использовать.

Каков наилучший способ приблизиться к этому. Я думаю об использовании библиотеки изображений, например imagemagick, для преобразования изображения. Но я не могу найти примеры, в которых вы можете изменить несколько слоев в файле PSD, прежде чем конвертировать его в другой формат.

Любой пример или предложение о методах для достижения этой цели поможет.

ответ

1

Редактирование многослойных PSD-файлов не будет легким. Я бы предложил вам, возможно, сохранить кольцо и каждый из слоев gemstone в виде отдельного файла PNG. Затем вы можете сделать что-то вдоль этих линий с ImageMagick:

#!/bin/bash 
convert ring.png       \ 
    \(layer-1.png \(+clone +level-colors red  \) -compose Multiply -composite \) -compose overlay -composite \ 
    \(layer-2.png \(+clone +level-colors green  \) -compose VividLight -composite \) -compose overlay -composite \ 
    \(layer-3.png \(+clone +level-colors blue  \) -compose LinearBurn -composite \) -compose overlay -composite \ 
    \(layer-4.png \(+clone +level-colors "#ffff00" \) -compose Saturate -composite \) -compose overlay -composite \ 
    result.png 

Давать вам PNG-файл, как это:

enter image description here

Вы можете поэкспериментировать с режимами смешивания, я просто попробовал несколько это выглядело смутно приятным для моего глаза. Если вы хотите получить список всех доступных режимов смешивания, вы можете сделать:

identify -list compose 
Atop 
Blend 
Blur 
Bumpmap 
ChangeMask 
Clear 
ColorBurn 
ColorDodge 
Colorize 
CopyBlack 
CopyBlue 
CopyCyan 
CopyGreen 
Copy 
CopyMagenta 
CopyOpacity 
CopyRed 
CopyYellow 
Darken 
DarkenIntensity 
DivideDst 
DivideSrc 
Dst 
Difference 
Displace 
Dissolve 
Distort 
DstAtop 
DstIn 
DstOut 
DstOver 
Exclusion 
HardLight 
HardMix 
Hue 
In 
Lighten 
LightenIntensity 
LinearBurn 
LinearDodge 
LinearLight 
Luminize 
Mathematics 
MinusDst 
MinusSrc 
Modulate 
ModulusAdd 
ModulusSubtract 
Multiply 
None 
Out 
Overlay 
Over 
PegtopLight 
PinLight 
Plus 
Replace 
Saturate 
Screen 
SoftLight 
Src 
SrcAtop 
SrcIn 
SrcOut 
SrcOver 
VividLight 
Xor 

Я также указаны некоторые цвета по имени и один гекс, так что вы можете видеть, как сделать это таким образом, если вы предпочитаете.

P.S. Если вы храните все свои работы в виде файлов PSD, вы всегда можете использовать Adobe ExtendScript для сценария экспорта различных слоев в виде отдельных файлов PNG с помощью одного нажатия ...

P.P.S. Это возможно для ImageMagick для извлечения слоев из самого файла PSD, но я извлек слои из вашего файла, и они не имеют одинакового размера, как фоновое изображение, и я не могу найти их правильное расположение относительно него. Если вы знаете что-то о том, как были созданы слои и могут ли они быть одинакового размера и выровнены с фоном, вы могли бы заменить layer-n.png в моих примерах с PhotoshopFile.psd[n]

P.P.P.S. Если вы хотите сделать эту серверную часть в .NET, вы должны взглянуть на библиотеку .NET для ImageMagick, которую можно найти здесь: https://magick.codeplex.com/. Если вам нужна помощь в переводе приведенных выше команд на C#, вы можете задать вопрос на странице обсуждений.