在Shrine中调整原始图像大小时如何上传

沉66

我在Ruby on Rails应用程序中使用Shrine来创建调整大小并将图像上传到存储的过程。

我当前的代码是:


image_uploader.rb

require "image_processing/mini_magick"

class ImageUploader < Shrine
  plugin :derivatives

  Attacher.derivatives_processor do |original|
    magick = ImageProcessing::MiniMagick.source(original)
    {
      resized: magick.resize_to_limit!(120, 120)
    }
  end

end

user.rb

class User < ApplicationRecord
  include ImageUploader::Attachment(:image)
  before_save :image_resize

  def image_resize
    self.image_derivatives!
  end
end

我在阅读官方文档时实现了它,但这在两种方式中是不可取的。

  1. 需要模型代码中的触发器。只能用一个完成image_uploader.rb吗?
  2. 要访问使用此代码生成的图像,需要使用“调整大小”前缀(例如@user.image(:resized).url),并且原始图像也将保留在存储中。我想处理原始图像本身。

解决这两个问题时,是否可以上传?

詹科
  1. 您可以添加以下补丁,该补丁将触发派生创建,作为将缓存文件提升为永久存储的一部分:

    # put this in your initializer
    class Shrine::Attacher
      def promote(*)
        create_derivatives
        super
      end
    end
    
  2. 您可以仅覆盖检索附件的模型方法以返回调整后的版本。您可以使用included此上传器使用该插件对所有模型执行此操作:

    class ImageUploader < Shrine
      # ...
      plugin :included do |name|
        define_method(name) { super(:resized) }
      end
    end
    

至于第二个问题:它将仍然将原始文件保留在存储中,但是默认情况下,只返回调整大小的版本即可。通常最好在视图装饰器中执行此操作。

您始终希望将原始文件保留在存储中,因为您不知道何时需要重新处理它。可能会发现您当前的调整大小逻辑对于某些文件类型和大小而言并不理想,在这种情况下,您需要为先前的附件重新生成调整大小的版本。如果您再也没有原始文件,那么您将无法执行此操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在JavaFX中调整窗口大小时如何调整图像大小

来自分类Dev

调整窗口大小时如何使图像流畅?

来自分类Dev

Codeigniter 如何上传调整大小的图像或拇指

来自分类Dev

调整大小时使图像居中

来自分类Dev

调整大小时图像模糊

来自分类Dev

调整大小时响应图像

来自分类Dev

通过保持原始图像大小来调整图像中的 ROI

来自分类Dev

在d3.js中调整图像大小时如何不保留长宽比

来自分类Dev

调整大小时如何防止图像填充整个Tkinter窗口?

来自分类Dev

使用最大设备宽度调整大小时如何隐藏图像?

来自分类Dev

Boostrap:调整大小时如何在图像上“粘贴”按钮

来自分类Dev

在div中调整大小时触发新图像的问题

来自分类Dev

调整大小时,使用laravel中的asset功能加载图像

来自分类Dev

上传后调整图像大小

来自分类Dev

上传前调整图像大小

来自分类Dev

图像调整大小和上传

来自分类Dev

如何在Drupal 8中使用ckeditor调整上传的嵌入式图像的大小

来自分类Dev

如何使用Jimp调整要上传的图像的大小而无需在Node.js中刷新

来自分类Dev

调整图像大小时,Codeigniter图像旋转

来自分类Dev

如何在视口调整大小时逐步缩放以调整图像大小

来自分类Dev

上传到WooCommerce时如何自动调整图像大小?

来自分类Dev

如何在 ionic 4 上传之前压缩或调整图像大小?

来自分类Dev

在Express JS中上传和调整图像大小时遇到问题

来自分类Dev

在Express JS中上传和调整图像大小时遇到问题

来自分类Dev

使用ReactiveMongo和GridFS在PlayFramework中调整上传图像的大小

来自分类Dev

在PIL中调整大小后将图像上传到Imgur

来自分类Dev

如何防止在CSS中调整图像大小?

来自分类Dev

如何调整伪元素中图像的大小?

来自分类Dev

如何在ImageDataGenerator中调整图像大小

Related 相关文章

  1. 1

    在JavaFX中调整窗口大小时如何调整图像大小

  2. 2

    调整窗口大小时如何使图像流畅?

  3. 3

    Codeigniter 如何上传调整大小的图像或拇指

  4. 4

    调整大小时使图像居中

  5. 5

    调整大小时图像模糊

  6. 6

    调整大小时响应图像

  7. 7

    通过保持原始图像大小来调整图像中的 ROI

  8. 8

    在d3.js中调整图像大小时如何不保留长宽比

  9. 9

    调整大小时如何防止图像填充整个Tkinter窗口?

  10. 10

    使用最大设备宽度调整大小时如何隐藏图像?

  11. 11

    Boostrap:调整大小时如何在图像上“粘贴”按钮

  12. 12

    在div中调整大小时触发新图像的问题

  13. 13

    调整大小时,使用laravel中的asset功能加载图像

  14. 14

    上传后调整图像大小

  15. 15

    上传前调整图像大小

  16. 16

    图像调整大小和上传

  17. 17

    如何在Drupal 8中使用ckeditor调整上传的嵌入式图像的大小

  18. 18

    如何使用Jimp调整要上传的图像的大小而无需在Node.js中刷新

  19. 19

    调整图像大小时,Codeigniter图像旋转

  20. 20

    如何在视口调整大小时逐步缩放以调整图像大小

  21. 21

    上传到WooCommerce时如何自动调整图像大小?

  22. 22

    如何在 ionic 4 上传之前压缩或调整图像大小?

  23. 23

    在Express JS中上传和调整图像大小时遇到问题

  24. 24

    在Express JS中上传和调整图像大小时遇到问题

  25. 25

    使用ReactiveMongo和GridFS在PlayFramework中调整上传图像的大小

  26. 26

    在PIL中调整大小后将图像上传到Imgur

  27. 27

    如何防止在CSS中调整图像大小?

  28. 28

    如何调整伪元素中图像的大小?

  29. 29

    如何在ImageDataGenerator中调整图像大小

热门标签

归档