Экспорт файла нескольких слоев PSD в PNG с применением эффекта оттенка к каждому слою

У нас есть следующий PSD https://app.box.com/s/rf514j3wnic1xkt6y1q3b5qnk0zds2rl

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

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

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

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

Теперь я пытаюсь выяснить, как лучше всего реализовать эту функциональность?

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

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

Любой пример или предложение о методах достижения этого будет очень полезным.


person Darsh    schedule 19.02.2015    source источник


Ответы (1)


Редактировать многослойные файлы PSD будет непросто. Я бы посоветовал вам сохранить кольцо и каждый из слоев драгоценных камней в виде отдельного файла 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-файла, подобного этому:

введите здесь описание изображения

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

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 одним нажатием клавиши...

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

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

person Mark Setchell    schedule 19.02.2015