gpt4 book ai didi

ruby-on-rails - 如何使用 ActiveStorage 在上传到云之前压缩图像

转载 作者:行者123 更新时间:2023-12-02 05:35:38 26 4
gpt4 key购买 nike

为了节省云空间,您将如何使用 activestorage 调整预上传图像的大小和压缩图像?

最佳答案

我在本地存储的开发中测试了下面的代码,它可以工作,但无论如何都会出现一些问题,我将在接下来解释。

在创建时,这似乎工作得很好,即使我认为应该有一种更干净的方法来做到这一点。

class User < ApplicationRecord
has_one_attached :avatar

before_save :resize_avatar_image

def resize_avatar_image
filename = avatar.filename.to_s
puts attachment_path = "#{Dir.tmpdir}/#{avatar.filename}"
File.open(attachment_path, 'wb') do |file|
file.write(avatar.download)
file.close
end
image = MiniMagick::Image.open(attachment_path)
# if image.width ...
image.resize "40x40"
image.write attachment_path
avatar.attach(io: File.open(attachment_path), filename: filename, content_type: "image/jpg")
end

end

我遇到的问题,有人可以解决

  1. 如果不下载到临时文件以便使用 MiniMagick 进行处理,我无法即时应用变体
  2. 更新(编辑)时,由于 purge 和 purge_later 方法出现错误,进程很慢:[ActiveJob] [ActiveStorage::PurgeJob] [d6a930ee-32cd-45a7-bfb5-72929d79f9bb] 执行 ActiveStorage::PurgeJob 时出错(作业 ID:d6a930ee-32cd-45a7-bfb5-72929d79f9bb)来自异步(默认),耗时 0.33 毫秒:ArgumentError(参数数量错误(给定 0,预期 1));我找不到解决方法。 检查旧的 blob 是否已删除。
  3. 第2点提到的问题似乎与.attach方法有关;
  4. 我仅测试了 *.jpg*.png
  5. 未在生产中或远程存储中进行测试

关于ruby-on-rails - 如何使用 ActiveStorage 在上传到云之前压缩图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50844197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com