2009-07-22 9 views

cevap

1

Varsayılan olarak, Rake görevi tüm küçük resimleri yeniler. Orijinal görüntüye dokunmayacağı/işlenmeyeceğini unutmayın.

look at the Rakefile ve Attachment sınıfına sahip olabilirsiniz ve belirli bir küçük resim boyutunu belirtebilmeniz için değiştirebilir, ancak geçerli tasarım orijinalini almak ve tüm küçük resimleri orijinalinden tekrar almak istediğinizi varsayar.

+0

Ve sadece başkalarını kırpmak için başka bir seçenek var mı: başparmak görüntüsü, diğerlerini yalnız bırakıyor? Eklenti sınıfını değiştirmeden mi demek istedim? Model/kontrol cihazında bazı ekstra kodlar var mı? – astropanic

0

Bunu kandirdim - bu zarif değil, ama benim için çalıştı.

Stillerinizden biri, diğer tüm stillerden farklı boyutlara sahip olmalıdır. Bu şekilde, özel Paperclip Processor'unuzda, komut dizesinin içeriğinin belirtilen boyutları içerip içermediğini görebilirsiniz. Eğer öyleyse özel işlem yapardınız, eğer yapmazsanız olmazdınız. Benim durumda

module Paperclip 
    class Cropper < Thumbnail 
    def transformation_command 
     SPECIAL_PROCESSING_FLAG = "150x150" 
     if crop_command && super.include?(SPECIAL_PROCESSING_FLAG) 
     crop_command + super.sub(/ -crop \S+/, '') 
     else 
     super 'do nothing fancy 
     end 
    end 

    def crop_command 
     target = @attachment.instance 
     if target.cropping? 
     " -crop '#{target.crop_w.to_i}x#{target.crop_h.to_i}+#{target.crop_x.to_i}+#{target.crop_y.to_i}'" 
     end 
    end 
    end 
end 

biz de olmayan özel durumda işlenmesi önemli değildi

(Ryan Bate'nın Railscast Bölüm 182. dan Bu kodu kısaltıldı - - ve onu değiştirilmiş) sonuçtan bu yana hiçbir şey değişmedi.

18

Son zamanlarda benzer bir sorun yaşadım ve bu çözümü bir mesaj panosunda buldum. Umarım yardımcı olur!

has_attached_file :screenshot, 
:default_style => :full, 
:styles => { 
    :full => "280x210", 
    :cropped => { :processors => [:screenshot_crop] } 
} 
+0

Bahşiş için teşekkürler! Görünüşe göre:: geometri parametresini zaten sağlamanız gerekir - ': kırpılmış => {: geometri => 'her neyse',: işlemciler => [: screenshot_crop]}' aksi halde 'undefined method \ '[]' nil verir: NilClass'. – jibiel

1

sizin paperclip.rake dosyasına bu kodu ekleyin:

def post_process_styles #:nodoc: 
    styles.each do |name, style| 
    if JustForOneDay::NAME == name 
    begin 
     raise RuntimeError.new("Style #{name} has no processors defined.") if style.processors.blank? 
     @queued_for_write[name] = style.processors.inject(@queued_for_write[:original]) do |file, processor| 
     Paperclip.processor(processor).make(file, style.processor_options, self) 
     end 
    rescue PaperclipError => e 
     log("An error was received while processing: #{e.inspect}") 
     (@errors[:processing] ||= []) << e.message if @whiny 
    end 
    end 
    end 
end 

:

desc "Reprocesses your attachments style (set CLASS, ATTACHMENT and STYLE)" 
    task :style => :environment do 
     module JustForOneDay 
     NAME = ENV['STYLE'] 
     end 

     module ::Paperclip 
     class Attachment 
      def post_process_styles #:nodoc: 
      @styles.each do |name, args| 
       if JustForOneDay::NAME == name 
       begin 
        raise RuntimeError.new("Style #{name} has no processors defined.") if args[:processors].blank? 
        @queued_for_write[name] = args[:processors].inject(@queued_for_write[:original]) do |file, processor| 
        Paperclip.processor(processor).make(file, args, self) 
        end 
       rescue PaperclipError => e 
        log("An error was received while processing: #{e.inspect}") 
        (@errors[:processing] ||= []) << e.message if @whiny 
       end 
       end 
      end 
      end 
     end 
     end 

     for_all_attachments do |instance, name| 
     result = instance.send(name).reprocess! 
     end 
    end 
    end 
2.3.1.1

Paperclip 2.3.3 bu olmalı Paperclip ile test edilmiştir Kolaydır, ataç versiyonunuzdaki attachment.rb dosyasına gidin.

İlgili konular