2011-10-31 6 views
5

Estoy buscando ejemplos/publicaciones en el blog/etc de lossless jpeg operations (crop n drop = cortar y pegar). Sé que hay un programa jpegtran (http://jpegclub.org/jpegtran) que puede realizar recortes sin pérdidas (en ciertas situaciones), pero parece que hay una falta de buena documentación. Sí, he probado el google.Cosecha sin pérdidas n caída (cortar y pegar) para JPEG

jpegtran también tiene una rama experimental que permite la caída sin pérdidas (= pegado) en ciertas situaciones, pero la documentación de esto parece ser aún peor.

¿Qué pasa con el interruptor drop de jpegtran es experimental? ¿Tiene problemas conocidos? ¿La gente lo usa?

drop parece ser una característica realmente fresca y útil, y me parece extraño que ha sido experimental de más de 10 años ...

Y sí, se podría utilizar formatos sin pérdida como PNG para tales operaciones, pero Estoy específicamente interesado en archivos JPEG.

Gracias!

+0

¿O conocen las personas otras alternativas para copiar y pegar JPEG sin pérdidas? – tdp2110

+0

En general, las operaciones de corte o copia involucran la lectura del archivo en la memoria en un formato estándar, por lo que es automáticamente sin pérdidas desde ese momento en adelante. El recorte sin pérdida implica escribir la imagen recortada en un archivo JPEG. Tiene limitaciones en el tamaño de la imagen y los límites del cultivo. –

Respuesta

-1

La página del manual jpegtran y las dos aplicaciones de Windows (JpegCrop y JpegJoin) son bastante buenas. Si tiene un procedimiento específico que está tratando de lograr, actualice su pregunta para explicarlo.

mí, he utilizado -drop hacer spriting sin pérdida de archivos JPEG en mi página de inicio empresa:
http://bestelec.co.uk/images/front/features.jpg

  1. En primer lugar, Coseché las fotos originales hacia abajo (en los límites de píxeles) para abarcar la imagen requerida. Este paso se puede guardar sin pérdidas utilizando un formato que no sea JPEG. [Dirección de arte]
  2. A continuación escalo estas imágenes hasta el ancho necesario según lo requerido por el diseño web. De nuevo, se guarda sin pérdidas ya que estos son pasos intermedios.
  3. Luego los ejecuté a través de cjpeg con varias opciones de calidad, hasta que encontré la configuración de calidad más baja con la que me sentía cómodo.
  4. (Opcional) A continuación, recorté el borde inferior de cada imagen individual de calidad reducida para alinearla con el penúltimo límite de la MCU en el eje vertical. Esto me permitió unir las fotos en una franja vertical sin espacios vacíos. Mi diseño web no requiere una cierta altura, así que tuve la libertad de elegir uno aquí. Si las extensiones de sus imágenes componentes no están alineadas en los límites de la MCU (como mis bordes derechos no), asegúrese de estar utilizando la compilación de jpegtran/JpegJoin de octubre de 2012, de lo contrario, solo la primera imagen aparecerá sin recortar.
  5. Por último, uní las imágenes juntas en un jpeg, y ejecuté el resultado a través de jpegtran -optimise -progressive -copy none para hacerlo lo más pequeño posible y progresivo.

El resultado neto es que he reducido tres solicitudes HTTP a una, lo que permite que los recursos posteriores en el mismo host se soliciten antes y mejorando los tiempos de carga. Esta fue una gran victoria para mí que convertir las imágenes a WebP y atenderlas individualmente, especialmente dado que la mayoría de nuestros visitantes corporativos están utilizando IE.

+0

¿por qué estás usando sprites para imágenes .jpeg? Se supone que las imágenes JPEG son contenido, no de fondo. https://groups.google.com/forum/#!tema/brújulas-usuarios/NCfZE2mkWJI – ziiweb

+0

@tirengarfio estos archivos JPEG son básicamente decoración, no contenido. –

+0

@Unsigned Esa no es una buena razón para rechazar esta respuesta. El autor de la pregunta original parecía saber cómo usar la opción 'drop', no intentaba escribir documentación para ella, sin importar cuánto quisiera encontrarla. –

3

Pasé demasiado tiempo tratando de resolver esto, así que espero que esto ayude a alguien más. Esta pregunta es bastante alta en Google cuando se buscan documentos en esta característica llamada "recortar y soltar".

general:

jpegtran -drop le permite "caer" las calles de uno a otro JPEG JPEG.

Solo reemplaza los bloques existentes, no expandirá la entrada, por lo que no puede concatenar dos archivos JPEG con solo -drop.

Sin embargo, si proporciona un parámetro -crop más grande que la imagen de entrada, JPEGTran escribirá bloques en blanco (grises) para expandir al tamaño deseado. Puede luego usar -drop para reemplazar estos bloques nuevos en blanco con su imagen deseada.

He aquí mi mierda ejemplo ASCII-art:

  1. Usted tiene dos imágenes, A.jpg y B.jpg, ambos tienen dimensiones de 256x256. Queremos concatenar estos lado a lado para producir una imagen 512x256. +---------+ +---------+ | | | | | A.jpg | | B.jpg | | | | | +---------+ +---------+

  2. Un "crop" A.jpg al tamaño requerido. El parámetro -crop es la notación de geometría X11 estándar: WIDTHxHEIGHT + X + Y Los valores X/Y positivos miden desde arriba/izquierda, y los valores negativos desde abajo/derecha, respectivamente. jpegtran -crop 512x256+0+0 -outfile O.jpg A.jpg +---------+---------+ | \ | | O.jpg \ (blank) | | \ | +---------+---------+

  3. Ahora "caída" B.jpg en la nueva sección, en blanco en O.jpg El parámetro -drop utiliza sólo el origen de coordenadas X/Y. jpegtran -drop +256+0 B.jpg -outfile O.jpg O.jpg +---------+---------+ +---------+ | \ | | | | O.jpg \ o<========| B.jpg | | \ | | | +---------+---------+ +---------+

  4. hecho! Ahora tiene un solo archivo, O.jpg, con unas dimensiones de 512x256, que contiene el contenido concatenadas de A.jpg y B.jpg +-------------------+ | | | O.jpg | | | +-------------------+

Notas:

  • A.jpg y B.jpg deben tener la misma altura. Si B.jpg es más alto, se cortará. Si A.jpg es más alto, el lado derecho de la imagen tendrá una franja de relleno en blanco.
  • A.jpg debe tener un ancho que finalice en un bloque completo. (¿Normalmente significa divisible por 8?)
  • B.jpg puede tener cualquier ancho, y no tiene que ser un múltiplo del tamaño del bloque.
+0

Creo que los archivos JPEG que usan submuestreo cromático deben ser divisibles entre 16 y 8, aunque podría estar equivocado al respecto. Y probablemente sea necesario que ambos archivos tengan la misma opción de submuestreo o no se combinarán correctamente. –

Cuestiones relacionadas