gpt4 book ai didi

ruby-on-rails - Rails 4 Carrierwave + RMagick,将 PDF 转换为 PNG 会更改文件编码而不是扩展名?

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

我可以上传 PDF 并将其转换为 PNG 格式,并通过 <%= image_tag "path/to/image" %> 在浏览器中正确呈现。 helper 。但是,实际的文件扩展名并未从 PDF 更改为 PNG。因此,如果您下载图像,它会下载为 image.pdf。下载后,如果您手动将扩展名更改为“png”,它会在本地计算机上正确打开图像软件。我希望 RMagick 进程自动更改扩展名以及文件格式。我可以编写一些代码来删除 PDF 并在保存文件时添加 PNG 扩展名,但似乎我在这里遗漏了一些东西。我认为当我转换为不同的格式时,这应该自动完成。这是我的 ImageUploader.rb类(class)。我正在使用 Carrierwave 和 RMagick。

# app/uploads/image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
include Sprockets::Rails::Helper

storage :file

def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

process :convert_to_png

def convert_to_png
manipulate!(format: "png", read: { density: 400 }) do |img, index, options|
options = { quality: 100 }
img.resize_to_fill!(850, 1100)
img
end
end

# Add 'png' file extension so file becomes 'image.pdf.png'
def filename
"#{original_filename}.png" if original_filename
end
end

最佳答案

这就是我处理它的方式:

version :pdf_thumb, :if => :pdf? do
process :thumbnail_pdf
process :set_content_type_png

def full_filename (for_file = model.artifact.file)
super.chomp(File.extname(super)) + '.png'
end
end

def thumbnail_pdf
manipulate! do |img|
img.format("png", 1)
img.resize("150x150")
img = yield(img) if block_given?
img
end
end

def set_content_type_png(*args)
self.file.instance_variable_set(:@content_type, "image/png")
end

关于ruby-on-rails - Rails 4 Carrierwave + RMagick,将 PDF 转换为 PNG 会更改文件编码而不是扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16196692/

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