Rails Paperclip 如何使用 ImageMagick 的滤镜选项?

2023-12-27

我最近用 Rails 实现了 Paperclip,并想尝试 ImageMagick 中的一些过滤器选项,例如blur http://www.imagemagick.org/Usage/blur/。我无法找到任何如何执行此操作的示例。它是否通过 :style 作为另一种选择传递?

:styles => { :medium => "300x300#", :thumb => "100x100#" }

@plang的答案是正确的,但我想给出模糊的确切解决方案,以防万一有人在寻找并发现这个问题:

:convert_options => { :all => "-blur 0x8" }
// -blur  {radius}x{sigma} 

Which changed this:
alt text

To this:
alt text


我没有对此进行测试,但您应该能够使用“convert_options”参数,如下所示:

:convert_options => { :all => ‘-colorspace Gray’ }

看一下https://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/thumbnail.rb https://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/thumbnail.rb

我个人使用我自己的处理器。

在模型中:

  has_attached_file :logo,
                    :url  => PaperclipAssetsController.config_url,
                    :path => PaperclipAssetsController.config_path,
                    :styles => {
                                 :grayscale => { :processors => [:grayscale] }
                               }

In lib:

module Paperclip
  # Handles grayscale conversion of images that are uploaded.
  class Grayscale < Processor

    def initialize file, options = {}, attachment = nil
      super
      @format = File.extname(@file.path)
      @basename = File.basename(@file.path, @format)
    end

     def make  
       src = @file
       dst = Tempfile.new([@basename, @format])
       dst.binmode

       begin
         parameters = []
         parameters << ":source"
         parameters << "-colorspace Gray"
         parameters << ":dest"

         parameters = parameters.flatten.compact.join(" ").strip.squeeze(" ")

         success = Paperclip.run("convert", parameters, :source => "#{File.expand_path(src.path)}[0]", :dest => File.expand_path(dst.path))
       rescue PaperclipCommandLineError => e
         raise PaperclipError, "There was an error during the grayscale conversion for #{@basename}" if @whiny
       end

       dst
     end

  end
end

对于简单的灰度转换来说,这可能不是 100% 必要的,但它确实有效!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails Paperclip 如何使用 ImageMagick 的滤镜选项? 的相关文章

  • Rails API ActiveStorage:获取公共 URL 以显示来自 AWS S3 存储桶的图像?

    我设置了 Rails 5 2 API 并遵循了有关如何将图像附加到模型对象的文档 这一切都工作正常 我遇到的问题是我想在 JSON 对象中返回附件的公共 URL 以便我可以使用该 URL 作为源 img 并让它显示 谢谢 我的develop
  • Rails 路线、url 和子域

    我的 ruby 应用程序分为不同的命名空间 例如 免费 free domain com 专业版 pro domain com vip vip domain com 在路由文件中看起来像这样 namespace free do match h
  • Devise + CanCan 只是阻止其他用户编辑对象

    您如何防止其他用户编辑对象 例如不属于自己的配置文件对象 大多数在线示例都是具有多个用户角色的复杂示例 我无法使其正常工作 但必须很简单 def initialize user can update Profile do profile p
  • 如何运行 Rails 服务器守护进程?

    我是 Rails 世界的新手 需要在守护进程模式下运行我的 Rails 测试服务器 我注意到有一个 d 标志 但它对我不起作用 rails s d 不应该是这样吗 它应该是 rails server daemon to kill the s
  • Rails 中的代码片段应该放在哪里?

    我有这个代码片段 可以为 POST 生成签名 它的细节并不重要 但我想知道的是 由于它不是与模型相关的代码块 所以它确实可以在任何地方使用 在控制器中 在模型中 在视图助手中 即使在视图中 因此 我不确定在哪里 甚至更大的问题是 一旦将其放
  • Rails api 中阻止用户配置文件的最佳 HTTP 状态代码是什么?

    我在 Rails 中为社交应用程序编写了一个 API 这个应用程序就像Facebook一样 用户可以阻止其他用户 如果用户 A 阻止用户 B 则用户 B 无法查看用户 A 的个人资料页面 那么我应该返回的最佳 HTTP 代码状态是什么 40
  • 供用户使用的 Rails 模型结构

    我是 Rails 新手 正在开发我的第二个 Rails 应用程序 该应用程序将为用户提供不同的角色 但某些用户将具有多个角色 该网站的每个用户都将是艺术家 一些用户将担任主持人的角色 我将如何构建这个 在我使用的一些 PHP 应用程序中 只
  • 没有路线匹配 [GET]“user/sign_out”rails 5

    我目前使用 Devise 遇到此错误 并且我已经尝试了其他问题中的多种方法 以便以零运气解决它 首先建议我确保将该方法添加为删除 No luck 然后我被建议我需要在我的布局标题中包含以下内容 or this 还是 运气不好 最后 建议我更
  • URI::InvalidURIError(错误的 URI(不是 URI?):nil)Active Storage service_url

    配置信息 rails version 6 0 ruby version 2 7 0 gem image processing gt 1 2 存储 yml local service Disk root 开发 rb config active
  • 设计涟漪

    我正在尝试使用以 riak 作为数据库的设备创建身份验证 我找到了同样的 ORM 策略https github com frank06 devise ripple https github com frank06 devise ripple
  • 如何保持 git 存储库的公共和私有版本同步?

    我正在 Github 上发布一个开源 Rails 应用程序 可能是 MIT 许可证 我还想维护一个项目的私人分支 分支 我们将使用它作为付费服务的一部分 在这种情况下组织存储库的最佳方式是什么 而且 当我有两个项目的更新时 如何保持项目同步
  • 通俗地说,Ruby on Rails ORM 是什么?请解释

    我无法理解 Ruby on Rails 中的 ORM 据我了解 表 列和对象 属性之间存在 1 1 的关系 所以每条记录都是一个对象 另外 模型到底是什么 我知道它映射到一张桌子 我真正追求的是对上述内容有更深入的理解 预先感谢您的帮助 我
  • Rails 命令有什么区别:--no-test-framework、--skip-test-unit 和 -T?

    原本我以为这三者都是一样的 但现在仔细一看 却发现它们各有不同 我通过搜索找不到任何关于此的好的文档 根据导轨API http api rubyonrails org classes Rails Generators Base html a
  • Ruby on Rails:如何设计 SaaS 基础设施?

    我正在构建一个 Rails 3 应用程序 计划将其作为基于订阅的 SaaS 软件即服务 产品提供 基本上 我希望用户能够点击我的 注册 页面 创建一个新帐户 并立即开始使用该软件 我想要实现的一个很好的例子是 http www gethar
  • 查找具有唯一两列组合的所有行

    我有这张桌子messages sender id recipient id 1 2 1 3 1 3 2 1 3 1 2 3 我希望选择这样的行 Either sender id or receiver id current user id
  • 防止Rails Turbolinks导致Google地图JS多次执行

    我目前正在开发 Rails 应用程序 但出现以下错误 您已在此页面上多次包含 Google Maps API 这可能会导致意外错误 经过一番研究后 我发现 Turbolinks 导致了这个问题 当 的时候link to单击后 Google
  • Accepts_nested_attributes_for Rails 3 中的实际形式使用

    使用 Ruby on Rails 3 我半明白accepts nested attributes for是如何的supposed工作 但我无法找出以某种形式实现这一点的实用方法 例如 如果有人想在其用户页面中添加他们最近的位置 user r
  • 在所有延迟的作业之前挂钩

    是否可以在所有delayed job任务之前运行一个方法 基本上 我们试图确保每台运行delayed job的服务器都有我们代码的最新实例 因此我们希望运行一个方法来在每个作业运行之前检查这一点 我们已经有了 check 方法并在其他地方使
  • Rails 6 - 操作文本和 API

    我正在创建一个 Rails 6 0 0 应用程序 它具有以下模块 网络 表格 Cruds Api 我使用的地方有一个 CRUD动作文本 https edgeguides rubyonrails org action text overvie
  • 在 git 中管理 schema.rb 的首选方法是什么?

    我不想添加schema rb to gitignore 因为我希望能够从该文件加载新的数据库架构 然而 保持检查状态会导致各种虚假冲突 而这些冲突很容易通过新的解决方案解决 db migrate reset 基本上我想要一种方法 将 sch

随机推荐

  • 在模块 jetified-hamcrest-core-1.3.jar 中发现重复的类 org.hamcrest.BaseDescription

    安卓工作室3 6 应用程序 build gradle androidTestImplementation androidx test ext junit 1 1 1 androidTestImplementation com azimola
  • OpenMP 多个线程更新同一数组

    我的程序中有以下代码 我想使用 OpenMP 加速它 for i curr index i lt curr index rx size i 2 int64 t tgt rcvq i int64 t src rcvq i 1 if TEST
  • Eclipse JAVA分离单元测试和集成测试

    我正在升级一个仅包含用 JAVA 编写的集成测试的项目 现在我们要编写单元测试 所以我决定创建 src it java 文件夹来放置所有现有测试 并在 src test java 中编写新的单元测试 我已经使用 surfire 和 buil
  • Alexa 自定义插槽类型:没有意图价值

    我已经将这个问题发布到亚马逊开发者论坛 但没有在那里收到答案 我想 Stackoverflow 从一开始就应该是首选 据我了解 如果我使用自定义槽类型 即使其可能值列表不包含口语单词 口语单词仍会传递给函数 文档说 自定义槽类型并不等同于枚
  • 如何向 ASP.NET 3.5 图表控件添加图例?

    有没有办法向它创建的图表添加图例 我创建了一个折线图 默认情况下它为不同的 y 轴数据创建了不同的颜色 我想要侧面有一个图例 显示哪些数据与哪种线条颜色相匹配 谢谢 您的图表控件只需添加以下行即可使用数据系列名称创建图例 chart Leg
  • 是否可以切换 appengine 应用程序的后端语言?

    我可以测试一下 但我不知道这是否可能 我用后端 python 运行一个 gae 应用程序 如果我想将语言更改为 Go Java 或 PHP 我可以保留我的应用程序和数据 而只部署使用另一个 SDK 和另一种语言而不是我当前选择的完整新版本的
  • 在 Visual Studio 2010 中混合异常处理模型会产生什么后果?

    我有第三方静态库Enable C Exceptions set to No EH未指定标志 从启用了 C 异常的代码中调用它会产生什么后果 EHa 如果从库内部抛出结构化异常 主应用程序提供给 set se translator 的函数是否
  • 更新多线程 PyQT 中的 GUI 元素

    我研究了一段时间以查找信息如何使用 PyQT 进行多线程程序 更新 GUI 以显示结果 我习惯于通过示例进行学习 但我找不到 是的 我找了几周 任何使用多线程执行简单任务的程序的简单示例 例如连接到 www 站点列表 5 个线程 并仅进行打
  • 如何捕获和解析从 Google Maps v3 API 返回的 JSON?

    我写下了以下代码 var url http maps googleapis com maps api geocode json latlng position coords latitude position coords longitud
  • 在 Android 中旋转可绘制对象

    怎样才能一个Drawable从资源加载并在绘制时旋转 例如 我想画一个箭头 并在绘制时能够将其旋转到不同的方向 您需要使用 Bitmap 和 Canvas 类函数来准备可绘制对象 Bitmap bmpOriginal BitmapFacto
  • C++ 指向成员函数的指针,替换 __closure

    不久前 Borland 在他们的 BCB 环境中引入了 C 语言的扩展 这个扩展是一个 closure 关键字 问题是 是否可以用普通 C 或 C 11 实现此类功能 如果您不熟悉 closure 关键字 下面的代码在注释中提供了解释 提前
  • 使用 Google 标签管理器提取部分 URL

    所以我有这个网址 https www site be pand titel van het pand t8500 17082 4 https www site be pand titel van het pand t8500 17082 4
  • MySQL 数据库中如何处理并发查询?

    我正在使用 MySQL 数据库 我想知道如果我同时进行多个 500 或更多 查询以便从多个表中获取信息 这些查询是如何处理的 顺序还是并行 查询始终在多个会话 即客户端连接 之间并行处理 单个连接上的所有查询都会相继运行 可以根据可用的服务
  • Android 游戏 - 记录时间

    我有一款安卓益智游戏 当谜题开始时 我取当前时间 long startTime System currentTimeInMillis 当玩家完成拼图时 我再次计时 减去开始时间并计算出经过的时间 这一切都好 我的问题是当应用程序中断时该怎么
  • Magento:如何让观察者在外部脚本中工作?

    据我所知 当脚本在 Magento 外部运行时 事件触发时不会调用观察者 为什么 我如何解决它 以下是导致我提出这个问题的原始问题 问题是应用目录规则的观察者永远不会被调用 事件触发 但观察者没有接收到它 我正在运行一个加载 Magento
  • 下载 Graphlab 依赖项 get_dependencies() 时出现问题

    当我尝试下载运行所需的依赖项时遇到问题graphlab I do import graphlab我得到以下信息 ACTION REQUIRED Dependencies libstdc 6 dll and libgcc s seh 1 dl
  • 是否可以序列化 C# 代码块?

    我正在使用 C NET http en wikipedia org wiki NET Framework3 5 是否可以序列化一段代码 将其传输到某个地方 反序列化 然后执行它 其用法示例如下 Action pauxPublish dele
  • git中如何忽略以#开头的文件

    我想知道是否有可能 如果可能的话如何实现 通过 gitignore 忽略 git 中以 开头的文件 我已经尝试过了 myfile 没有运气 这是正确的语法
  • 更改 MySQL 中的列数据类型而不丢失其他元数据(DEFAULT、NOTNULL...)

    If I do ALTER TABLE testtable MODIFY mycolumn NEWDATATYPE 我失去了其他定义 例如 NOT NULL COMMENTS DEFAULT 值 有没有办法做到这一点 在 PostgreSQ
  • Rails Paperclip 如何使用 ImageMagick 的滤镜选项?

    我最近用 Rails 实现了 Paperclip 并想尝试 ImageMagick 中的一些过滤器选项 例如blur http www imagemagick org Usage blur 我无法找到任何如何执行此操作的示例 它是否通过 s