2014-07-09 6 views
0

다음은 하나의 url 속성을 가진 간단한 원시 레일 모델입니다.ImageMagick은 Heroku에서 처리 된 이미지를 축소합니다.

class Photo < ActiveRecord::Base 
    validates :url, presence: true 

    def watermark 
    remote_photo = MiniMagick::Image.open(url).write("#{Rails.public_path}/photos/photo-#{id}.jpg") 
    photo = MiniMagick::Image.open("#{Rails.public_path}/photos/photo-#{id}.jpg") 

    marked_photo = photo.composite(mark, 'jpg') do |c| 
     c.gravity 'SouthEast' 
     c.geometry '+15' 
    end 

    marked_photo.write(marked_path) 
    File.delete("#{Rails.public_path}/photos/photo-#{id}.jpg") 
    end 

    def marked_path 
    "#{Rails.public_path}/photos/photo-marked-#{id}.jpg" 
    end 

private 

    def mark(mark = 'mark.jpg') 
    @mark ||= MiniMagick::Image.open("#{Rails.public_path}/#{mark}") 
    end 
end 

#watermark 방법은 사진의 오른쪽 아래에 마크 이미지를두고 public/photos/photo-marked-#{id}.jpg에 파일을 기록합니다. 그것은 내 로컬 컴퓨터에서 완벽하게 작동하지만 Heroku에서는 ~ 600x800px의 반환 이미지가 10x15px가됩니다.

답변

0

좋아, 문제는 형상 속성 값을 지정하는 방식에있었습니다. c.geometry '+15'의 경우 ImageMagick은 너비를 15로 취하고 가로 세로 비율을 유지하면서 이미지의 크기를 조정합니다. 원래 크기를 유지하고 수평 오프셋을 적용하려면 값은 인 'x+15'과 같아야합니다.

위의 모두는 Heroku에 설치된 ImageMagick의 버전 6.5.7에 관한 것입니다. 초기 '+15'은 최신 버전에서 잘 작동합니다.

@mschoening 덕분에 누가 도와 주 었는지 알려드립니다.