Ho un: processore di immagini xxx, e ho due stili nel modello: grande e: pollice.paperclip esegue processori su uno stile selezionato
Come posso elaborare con: xxx solo: immagine del pollice che lascia intatta la grande immagine?
Ho un: processore di immagini xxx, e ho due stili nel modello: grande e: pollice.paperclip esegue processori su uno stile selezionato
Come posso elaborare con: xxx solo: immagine del pollice che lascia intatta la grande immagine?
Per impostazione predefinita, l'attività Rake aggiorna tutte le miniature. Tieni presente che non toccherà/elaborerà l'immagine originale.
È possibile avere una classe look at the Rakefile e Attachment e modificare per consentire di specificare una dimensione di anteprima specifica, ma il progetto corrente presuppone che si desidera prendere l'originale e ripetere tutte le miniature dall'originale.
Ho ammesso che non è elegante, ma ha funzionato per me.
Uno dei tuoi stili deve avere dimensioni diverse da tutti gli altri stili. In questo modo, nel tuo Paperclip Processor personalizzato, puoi vedere se il contenuto della stringa di comando contiene le dimensioni specificate. Se così fosse, dovresti fare un'elaborazione speciale, altrimenti non lo faresti.
(I ritagliato questo codice - e modificato - da Ryan Bate Railscast episodio 182.)
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
Nella mia situazione non aveva importanza che noi rielaborati nel caso non troppo speciale, dal momento che il risultato finale non ha cambiato nulla.
Recentemente ho riscontrato un problema simile e ho trovato questa soluzione su una bacheca. Spero che sia d'aiuto!
has_attached_file :screenshot,
:default_style => :full,
:styles => {
:full => "280x210",
:cropped => { :processors => [:screenshot_crop] }
}
Grazie per il suggerimento! Sembra che dovresti fornire comunque il parametro ': geometry' -': cropped => {: geometry => 'whatever',: processors => [: screenshot_crop]} 'altrimenti restituisce' metodo indefinito \ '[] 'per nil: NilClass'. – jibiel
Aggiungere questo codice al file paperclip.rake:
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
Testato con il Paperclip 2.3.1.1
In Paperclip 2.3.3 questo dovrebbe essere:
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
È facile, basta andare al file attachment.rb nella versione paperclip.
E c'è un'altra opzione per ritagliare solo: l'immagine del pollice lascia solo gli altri? Intendo senza modificare la classe Allegato? Forse qualche codice in più nel modello/controller? – astropanic