Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Иногда нужно изменить размер изображения (сделать его больше или меньше). Для этого обычно применяется один из четырех методов:
thumbnailresizesamplescalerequire 'RMagick'img = Magick::ImageList.new("vw.jpg")# Все эти методы могут принимать либо один параметр - коэффициент# масштабирования, либо два - ширину и высоту.# Метод thumbnail самый быстрый, особенно если нужно получить очень# маленькое изображение.pic1 = img.thumbnail(0.2) # Уменьшить до 20%.pic2 = img.thumbnail(64,48) # Новый размер - 64x48 пикселей.# resize работает со средней скоростью. Если заданы третий и четвертый# параметры, то они интерпретируются как фильтр и размывание# соответственно. По умолчанию подразумевается фильтр LanczosFilter# и коэффициент размывания 1.0.pic3 = img.resize(0.40) # Уменьшить до 40%.pic4 = img.resize(320,240) # Новый размер - 320x240.pic5 = img.resize(300,200,Magick::LanczosFilter,0.92)# Метод sample также имеет среднее быстродействие (и не выполняет# интерполяцию цветов).pic6 = img.sample(0.35) # Уменьшить до 35%.pic7 = img.sample(320,240) # Новый размер - 320x240.# Метод scale в моих тестах оказался самым медленным.pic8 = img.scale(0.60) # Уменьшить до 60%.pic9 = img.scale(400,300) # Новый размер - 400x300.Изображения можно подвергать и многим другим трансформациям. Некоторые просты и понятны, другие гораздо сложнее. В следующем разделе мы рассмотрим несколько интересных трансформаций и специальных эффектов.
15.3.2. Специальные эффекты и трансформации
Над изображением можно выполнять следующие операции: зеркально отражать, инвертировать цвета, поворачивать, растягивать, перекрашивать и т.д. В RMagick есть десятки методов для выполнения подобных операций, причем многие из них еще и настраиваются путем указания параметров.
В листинге 15.8 показано 12 различных эффектов. Метод
examplerequire 'Rmagick'def do_flip(img) img.flipenddef do_rotate(img) img.rotate(45)enddef do_implode(img) img = img.implode(0.65)enddef do_resize(img) img.resize(120,240)enddef do_text(img) text = Magick::Draw.new text.annotate(img, 0, 0, 0, 100, "HELLO") do self.gravity = Magick::SouthGravity self.pointsize = 72 self.stroke = 'black' self.fill = '#FAFAFA' self.font_weight = Magick::BoldWeight self.font_stretch = Magick::UltraCondensedStretch end imgenddef do_emboss(img) img.embossenddef do_spread(img) img.spread(10)enddef do_motion(img) img.motion_blur(0,30,170)enddef do_oil(img) img.oil_paint(10)enddef do_charcoal(img) img.charcoalenddef do_vignette(img) img.vignetteenddef do_affine(img) spin_xform = Magick::AffineMatrix.new(1, Math::PI/6, Math::PI/6, 1, 0, 0) img.affine_transform(spin_xform) # Применить преобразование.end###def example(old_file, meth, new_file) img = Magick::ImageList.new(old_file)
