Bir xxx görüntü işlemcim var ve modelde iki stil var: büyük ve: thumb.Seçilen stilde ataç çalıştırma işlemcileri
Nasıl işleyebilirim: xxx only: thumb image: büyük resim el değmemiş mi?
Bir xxx görüntü işlemcim var ve modelde iki stil var: büyük ve: thumb.Seçilen stilde ataç çalıştırma işlemcileri
Nasıl işleyebilirim: xxx only: thumb image: büyük resim el değmemiş mi?
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.
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.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] }
}
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
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.
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