반송파를 사용하고 있는데이 문제가 있습니다. 일단 프로젝트가 전달되면 시스템의 이미지를 다른 크기로 표시해야하는 섹션을 추가해야한다고 가정합니다. 이미 시스템에있는 각 이미지에 대한 새로운 차원을 재생성하고 싶지 않습니다. 보기가 필요할 때마다 생성하고 캐시 할 수 있기를 원합니다. 비슷한 : "/>. 새로운 크기 500x150이 이미 존재하면 캐시 된 URL을 반환하고 그렇지 않으면 캐시 된 URL을 반환합니다.즉각적인 반송파 크기 조정
저는 Carrierwave를 좋아하지만 불행히도 크기를 조정할 수있는 기능은 없습니다. 이 기능을 추가하는 것은 꽤 간단해야한다고 말하지만, 거의 아무것도 발견하지 못했습니다. 가까운 업 그레 이드가이 업 로더입니다. https://gist.github.com/DAddYE/1541912 내 버전이기 때문에 수정해야합니다.
class ImageUploader < FileUploader
include CarrierWave::RMagick
#version :thumb do
# process :resize_to_fill => [100,100]
#end
#
#version :thumb_square do
# process :resize_to_fill => [100,100]
#end
#
#version :full do
# process :resize_to_fit => [550, 550]
#end
def re_size(string_size)
if self.file.nil?
return self
end
begun_at = Time.now
string_size.gsub!(/#/, '!')
uploader = Class.new(self.class)
uploader.versions.clear
uploader.version_names = [string_size]
img = uploader.new(model, mounted_as)
img.retrieve_from_store!(self.file.identifier)
cached = File.join(CarrierWave.root, img.url)
unless File.exist?(cached)
img.cache!(self)
img.send(:original_filename=, self.file.original_filename)
size = string_size.split(/x|!/).map(&:to_i)
resizer = case string_size
when /[!]/ then :resize_to_fit
# add more like when />/ then ...
else :resize_to_fill
end
img.send(resizer, *size)
FileUtils.mv(img.file.file, cached)
#img.store!
end
img
end
def extension_white_list
%w[jpg jpeg gif png]
end
def filename
Digest::MD5.hexdigest(original_filename) << File.extname(original_filename) if original_filename
end
def cache_dir
"#{Rails.root}/tmp/uploads"
end
def default_url
'/general/no-image.png'
end
end
이 버전의 문제는 re_size ("100x100"). url을 호출 할 때 분명히 실제 크기가 조정 된 이미지가 생성되기 전에 url이 생성되어 반환된다는 것입니다. 결과적으로 임의의 후속 새로 고침시 잘 표시되는 깨진 링크가있는 페이지가 생성됩니다.
누구나 공유 할 수있는 더 나은 결과를 얻었습니까? :)
잠자리로 바꾸라고 말하지 마십시오. 나는 Carrierwave를 사용하고 있으며 정말 좋아합니다. 또한 내 프로젝트의 일부인 RailsAdmin과 완벽하게 통합됩니다.
문제는 시간 디자인의 대부분은 매우 가난하고 내가 크기가 조정 된 이미지의 끝없는 재생에 새로운 크기가 추가 될 때마다 결과 앞서 개발의 정확한 이미지 크기를 몰라 발견되었습니다. 즉석에서 생성하는 방법이 필요합니다. – user711643
위의 내용은 크기에 관계없이 원본 이미지를 가져 와서 지정된 크기 제한에 맞게 크기를 조정합니다. 나는 당신이 '날아 다니는'것에 의해 무엇을 의미하는지 모른다. – ChrisBarthol
주문형이라고합니다. 프로젝트가 전달되면 시스템의 이미지를 다른 크기로 표시해야하는 섹션을 추가해야한다고 가정합니다. 이미 시스템에있는 각 이미지에 대한 새로운 차원을 재생성하고 싶지 않습니다. 보기가 필요할 때마다 생성하고 캐시 할 수 있기를 원합니다. 뭔가 : "/>. 새 크기 500x150이 이미 있으면 캐시 된 URL을 반환하고 그렇지 않으면 캐시 된 URL을 반환합니다. – user711643