Перо изображение из кода - PullRequest
3 голосов
/ 24 сентября 2010

Есть ли способ вычеркнуть изображение из кода?(Если вы не знаете, что такое растушевка, отметьте this out - я не использую грязный язык)

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

Ответы [ 4 ]

1 голос
/ 25 сентября 2010

Я вижу два пути.В обоих случаях вы подготавливаете прозрачное изображение PNG, которое является эффектом «перьев».Затем вы объедините это изображение с оригиналом и получите запрошенный результат.

Решение будет немного сложнее в случае динамических размеров - но основной принцип будет таким же.

CSS way

В этом случае вы можете выполнить операцию на стороне клиента.Просто подготовьте прозрачную PNG-маску, которая создает эффект «перо» - используйте Photoshop / Gimp для ее создания.

Предположим, что вы назвали свою маску «feather.png», а исходное изображение называется «source.jpg»».Тогда вы можете использовать этот HTML-код

<div style="width: 200px;height: 200px; background: url(/images/source.jpeg)">
  <img width="200" height="200" src="/images/feather.png" />
</div>

Серверная сторона

В этом случае я бы определенно использовал gem скрепки.Он использует магию imagemagick библиотека.Вы могли бы думать об этом как о Photoshop в командной строке (немного преувеличивая, но не сильно)

В вашей модели:

class Avatar < ActiveRecord::Base
  has_attached_file :image, :styles => {
    :feather => {
      :geometry => "200x200",
      :format => :jpg
    },
    :normal => {
      :geometry => "200x200",
      :format => :jpg
    }
  },
  :convert_options => {
    :feather => "#{Rails.root.join('public/images/feather-200x200.png')} -composite"
  }

end

И это все.Затем в вашем коде, когда вы хотите использовать «пернатое» изображение, вы должны использовать:

<%= image_tag avatar.image.url(:feather) %>

Или: обычное для не пернатых его версии.

Все преобразования ипреобразование просто выполнить как задание:

avatar = Avatar.new
# from file...
avatar.image = open(....)
# or maybe from form...
avatar.image = params[:...]
# it not only saves the avatar to db but runs the image transformations
avatar.save!
1 голос
/ 24 сентября 2010

Paperclip поддерживает манипуляции с изображениями с помощью приложения ImageMagick, которое позволит вам программно манипулировать изображением при загрузке.Взгляните на подраздел «Постобработка» по ссылке ниже

http://github.com/thoughtbot/paperclip

Вам нужно немного познакомиться с CLI ImageMagick, чтобы понять, чего вы хотите, но он определенно делает-able.

0 голосов
/ 24 сентября 2010

Отказ от ответственности: я работаю в Atalasoft.

Для этого можно использовать наш бесплатный SDK для обработки изображений DotImage Photo . Самый простой способ - использовать наложенные полупрозрачные изображения поверх оригинала. Вы можете создавать их во время выполнения, чтобы иметь правильный размер.

0 голосов
/ 24 сентября 2010

Насколько я знаю, rmagick - лучший для этого: http://rmagick.rubyforge.org/portfolio2.html

... но ближайший эффект к тому, что вы ищете, таков:

alt text

Вы также можете позволить пользователям загружать свои фотографии и затем отображать их перьями, используя некоторые приемы CSS (например, прозрачный png поверх изображения)

...