Программно изменить цвет изображения PNG / PSD в.Net
У меня есть несколько веб-элементов управления, которые состоят из изображений PNG. Самое простое - это кнопка.
Мне нужно иметь возможность создавать эти элементы управления с разными цветами в зависимости от цвета, выбранного клиентом.
Изображения представляют собой файлы.PSD, наслоенные перед экспортом в png.
Моя идея состояла в том, чтобы позволить клиенту выбрать один цвет и использовать фильтр слоя в psd, чтобы изменить общий цвет изображения и программно экспортировать.PSD в PNG на сервере. Я изучал использование интерфейса Photoshop CS через COM, но не подумал, кто-нибудь еще использовал его для аналогичной задачи?
В качестве альтернативы я мог бы прочитать png в память и выполнить замену цвета, но это кажется действительно сложным для того, что читается как простая (ish) задача.
Спасибо заранее
1 ответ
.PSD - довольно сложный и плохо документированный формат файла, который постоянно получает новые функции от Adobe, поэтому редактирование их - не простая задача.
Одним из способов является использование пакетной обработки Photoshop, что означает, что Photoshop установлен на сервере, но если вы хотите сделать это через COM, это не должно быть проблемой.
Одной из отправных точек может быть: http://www.webdesignerdepot.com/2008/11/photoshop-droplets-and-imagemagick/
Другим способом было бы попробовать составные слои, используя C#, это означает, что у вас были бы некоторые готовые слои (текстуры / границы / и т. Д.), Некоторые были бы созданы во время выполнения, и все эти слои были бы объединены во время выполнения, используя C#.