2011-10-31 13 views
5

Sto cercando esempi/post di blog/ecc. Di operazioni jpeg senza perdita (crop n drop = taglia e incolla). So che esiste un programma jpegtran (http://jpegclub.org/jpegtran) che può eseguire il ritaglio senza perdita di dati (in determinate situazioni), ma sembra esserci una mancanza di buona documentazione. Sì, ho provato il google.Ritaglia senza perdita di dati (taglia e incolla) per JPEG

jpegtran ha anche un ramo sperimentale che consente di eliminare senza perdite (= incollare) in determinate situazioni, ma la documentazione di questo sembra essere ancora peggio.

E lo switch drop di jpegtran è sperimentale? Ha problemi noti? Le persone lo usano?

drop sembra una caratteristica davvero cool e utile, e trovo strano che è stato sperimentale per oltre 10 anni ...

E sì, si potrebbe usare formati lossless come PNG per tali operazioni, ma Sono specificamente interessato a JPEG.

Grazie!

+0

Oppure le persone sono a conoscenza di altre alternative per il ritaglio e l'incollatura senza perdite di file JPEG? – tdp2110

+0

Generalmente le operazioni di copia o copia implicano la lettura del file in memoria in un formato standard, rendendolo automaticamente senza perdite da quel momento in avanti. Il ritaglio senza perdita di dati comporta la scrittura dell'immagine ritagliata su un file JPEG. Ha limitazioni sulla dimensione dell'immagine e sui confini del raccolto. –

risposta

-1

La pagina man jpegtran e le due finestre (JpegCrop e JpegJoin) sono abbastanza buone. Se hai una procedura specifica che stai cercando di realizzare, ti preghiamo di aggiornare la tua domanda per spiegarla.

me stesso, ho usato -drop fare sprite senza perdita di file JPEG sulla mia home page dell'azienda:
http://bestelec.co.uk/images/front/features.jpg

  1. In primo luogo, ho ritagliato le foto originali verso il basso (sui confini pixel) fino a comprendere la cornice necessaria. Questo passaggio può essere salvato senza perdita utilizzando un formato non JPEG. [Art direction]
  2. Ho ridimensionato queste immagini fino alla larghezza necessaria, come richiesto dal web design. Di nuovo, salvati senza perdite poiché questi sono passaggi intermedi.
  3. Quindi li ho eseguiti tramite cjpeg con varie opzioni di qualità, finché non ho trovato l'impostazione di qualità più bassa con cui mi trovavo a mio agio.
  4. (Opzionale) Quindi ho ritagliato il bordo inferiore di ciascuna immagine singola di qualità ridotta per allinearlo con il limite penultimo di MCU sull'asse verticale. Questo mi ha permesso di unire le foto in una striscia verticale senza spazi vuoti. Il mio web design non richiede una certa altezza, quindi ero libero di sceglierne uno qui. Se le estensioni delle immagini dei componenti non sono allineate sui confini della MCU (poiché i miei bordi destro non lo erano), assicurati di utilizzare la build di jpegtran/JpegJoin di ottobre 2012, altrimenti solo la prima immagine apparirà non tagliata.
  5. Infine, ho unito le immagini insieme in un file jpeg e ho eseguito il risultato tramite jpegtran -optimise -progressive -copy none per renderlo il più piccolo possibile e progressivo.

Il risultato netto è che ho ridotto tre richieste HTTP a una, consentendo alle risorse successive sullo stesso host di essere richieste in anticipo e migliorando i tempi di caricamento. Questa è stata una vittoria più grande per me che convertire le immagini in WebP e servirle individualmente, soprattutto considerando che la maggior parte dei nostri visitatori aziendali utilizza IE.

+0

perché usi gli sprite per le immagini .jpeg? Si suppone che le immagini jpeg siano soddisfatte, non di sfondo. https://groups.google.com/forum/#!topic/compass-users/NCfZE2mkWJI – ziiweb

+0

@tirengarfio questi JPEG sono fondamentalmente decorativi, non contenuti. –

+0

@United Questa non è una buona ragione per sviare questa risposta. Il richiedente della domanda originale sembrava sapere come usare l'opzione 'drop', non stavo cercando di scrivere la documentazione per esso, non importa quanto volessi trovarlo. –

3

Ho passato troppo tempo a cercare di capirlo, quindi spero che questo aiuti qualcun altro. Questa domanda è piuttosto alta su Google durante la ricerca di documenti su questa cosiddetta funzione "ritaglio".

Panoramica:

jpegtran -drop consente di "cadere" i blocchi da un JPEG su un altro JPEG.

Sostituisce solo i blocchi esistenti, non espanderà l'input, quindi non è possibile concatenare due JPEG con solo -drop.

Tuttavia, se si fornisce un parametro -crop più grande dell'immagine di ingresso, JPEGTran scriverà blocchi vuoti (grigi) per espandersi alla dimensione desiderata. È possibile quindi utilizzare -drop per sostituire questi nuovi blocchi vuoti con l'immagine desiderata.

Ecco il mio schifoso esempio ASCII-art:

  1. Hai due immagini, A.jpg e B.jpg, entrambi hanno dimensioni di 256x256. Vogliamo concatenare questi side-by-side per produrre un'immagine 512x256. +---------+ +---------+ | | | | | A.jpg | | B.jpg | | | | | +---------+ +---------+

  2. Un "ritaglio" A.jpg alla dimensione richiesta. Il parametro -crop è la notazione geometrica X11 standard: WIDTHxHEIGHT + X + Y I valori X/Y positivi misurano dai valori superiore/sinistro e negativo rispettivamente in basso/a destra. jpegtran -crop 512x256+0+0 -outfile O.jpg A.jpg +---------+---------+ | \ | | O.jpg \ (blank) | | \ | +---------+---------+

  3. Ora "drop" B.jpg nella nuova, sezione vuota O.jpg Il parametro -drop utilizza solo l'origine coordinate X/Y. jpegtran -drop +256+0 B.jpg -outfile O.jpg O.jpg +---------+---------+ +---------+ | \ | | | | O.jpg \ o<========| B.jpg | | \ | | | +---------+---------+ +---------+

  4. Fatto! Si dispone ora di un singolo file, O.jpg, con dimensioni di 512x256, che contiene il contenuto concatenato di A.jpg e B.jpg +-------------------+ | | | O.jpg | | | +-------------------+

Note:

  • A.jpg e B.jpg devono avere la stessa altezza. Se B.jpg è più alto, verrà interrotto. Se A.jpg è più alto, il lato destro dell'immagine avrà una striscia vuota di riempimento.
  • A.jpg deve avere una larghezza che termina su un blocco completo. (Di solito significa divisibile per 8?)
  • B.jpg può avere qualsiasi larghezza e non deve essere un multiplo della dimensione del blocco.
+0

Penso che i file JPEG che usano il sottocampionamento cromatico debbano essere divisibili per 16 e non 8, anche se potrei sbagliarmi. Ed è probabilmente necessario che entrambi i file abbiano la stessa opzione di sottocampionamento o che non si combinino correttamente. –

Problemi correlati