【发布时间】:2012-11-08 18:11:34
【问题描述】:
我们正在使用 CarrierWave 在我正在处理的项目中上传文件。一个新的要求是解决上传 DICOM 文件的需要。 DICOM 文件除了包含大量其他数据外,还包含一个(或多个)图像。使用Ruby DICOM gem,我可以轻松地从文件中提取图像。当我尝试使用 CarrierWave 上传它们时,我的问题就出现了。
我希望能够从上传的文件中提取 JPEG,并存储该文件而不是原始 DICOM 文件。我尝试为上传的文件创建一个version,如下所示:
version :jpeg, :if => :is_dicom? do
process :create_jpeg
end
def is_dicom?(file)
IO.binread(file.to_file, 4, OFFSET) == 'DICM'
end
def create_jpeg
Rails.logger.debug "self is class #{self.class}"
dcm = DICOM::DObject.read(file.path)
image = dcm.image.normalize
end
我的 create_jpeg 方法基于我发现的另一个 create_thumbnail 方法,如果没有它的异常处理,它将被简化为:
def create_thumbnail(width, height, gravity = 'Center')
self.resize_to_fill(width, height, gravity)
end
我可以在调试控制台中看到 DICOM 已成功读取,但它实际上并没有保存将要提取的 JPEG。相反,我得到了我的原始 DICOM 和一个在文件名前面添加了“jpeg”的副本。如何告诉 CarrierWave 我要存储我提取的这个 JPEG,而不是存储我处理的原始文件?
【问题讨论】:
标签: ruby-on-rails-3 carrierwave