繁体   English   中英

使用 rmagick 将 pdf 转换为图像会产生黑色背景图像

[英]Converting pdf to image using rmagick produces black background image

我正在使用 Active Storage 上传 pdf 文件,我需要将其转换为图像并将其保存为附件。 下面是我用于此目的的代码,但它给了我转换后的黑色背景图像。

project_file.rb
class ProjectFile < ApplicationRecord
  has_many_attached: files
end

converted_image.rb
class ConvertedImage < ApplicationRecord
  has_one_attached: image
end

some_controller.rb
def show
  pdf = url_for(ProjectFile.last.files.first)
  PdfToImage.new(pdf).perform
end

pdf_to_image.rb
class PdfToImage
  require 'rmagick'
  require 'open-uri'

  attr_reader :pdf

  def initialize(pdf)
    @pdf = pdf
  end

  def perform
    jpg = Magick::ImageList.new(URI.open(pdf).path)

    file = Tempfile.new(['converted', '.jpg'])

    jpg.write(file.path)
    image = File.open(file)
    ConvertedImage.last.image.attach(io: image, filename: "converted.jpg", content_type: 'application/jpg')

    image.close
  end
end

有人对此有任何解决方案吗? 我是 Rmagick 的新手。

ruby '2.6.5'

导轨'6.0.1'

宝石'rmagick'

RMagick 将 Alpha 通道渲染为黑色。 如果 alpha 通道被移除,图像背景将呈现为白色。

可以使用以下代码段删除 Alpha 通道:

jpg = Magick::ImageList.new(URI.open(pdf).path)
jpg.each { |j| j.alpha(Magick::RemoveAlphaChannel) }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM