Ruby: Как мне наложить изображения поверх другого без Imagemagick?
У меня есть изображение размером 100 X 100, и я хочу центрировать его на чистом белом изображении размером 200 X 200.
Как бы я поступил так с ImageScience и Ruby, или другим сторонним пакетом? А без ImageMagick ни FreeImage? Я знаю, что это очень ограничивает, но эти два довольно глупы для меня, так как оба не работают на моем локальном Mac и моем экземпляре EngineYard Amazon. Я могу использовать FreeType с Ruby на моем Mac, но его не удается развернуть в облаке Amazon. Я не могу установить RMagick на моем Mac, но он может быть установлен на моем облаке Amazon.
Кроме того, я считаю, что ImageMagick должен быть установлен автоматически на каждом компьютере с Linux и Mac. Избавит некоторых людей от многих неприятностей. Так много боли за такую маленькую ценность.
2 ответа
Лучшим способом было бы использовать чистую рубиновую библиотеку, такую как http://docs.seattlerb.org/png/ из Seattle.rb или https://github.com/wvanbergen/chunky_png
Это довольно легко следовать. Вы должны создать белый холст 200х200 и загрузить на него свое изображение, или, если вам будет проще, составьте изображения, используя альфа-смешение.
(из примеров Чаки):
# Compose images using alpha blending.
avatar = ChunkyPNG::Image.from_file('avatar.png')
badge = ChunkyPNG::Image.from_file('no_ie_badge.png')
avatar.compose!(badge, 10, 10)
avatar.save('composited.png', :fast_rgba) # Force the fast saving routine.
Если вам действительно не нужно новое изображение, и оно только для отображения точек заливки, использовать CSS и / или JavaScript было бы намного проще.
Если обойти вопрос, но пытались ли вы установить ImageMagick на свой Mac с помощью Homebrew? Это так же просто, как просто установить Homebrew и набрать одну команду:
brew install imagemagick
Это должно работать без каких-либо проблем. Homebrew похож на менеджер пакетов, который должен был быть включен по умолчанию в Mac OS X. Я также использую его для установки других пакетов, не включенных по умолчанию, таких как Git, Ack, Graphviz, ...