Puede pensar que el borde resultante no será del todo blanco , ya que la pérdida de JPEG creará algún tipo de diferencia de color en la salida. Hice algunas pruebas, y en Photoshop, al menos, una imagen puramente blanca guardada a través del nivel 10 de JPEG para Save For Web (es decir, "baja") da como resultado una imagen decodificada que todavía es puramente blanca.
Determiné esto con dos pruebas:
Primero, cargué el JPEG como una capa en la parte superior del original, configuré el modo de fusión de la capa superior en Diferencia, luego agregué una capa de ajuste de Niveles encima para tratar de aumentar las diferencias. La imagen resultante permaneció en negro, lo que indica "no hay diferencia".
En segundo lugar, cuando no pude ver las diferencias esperadas, solté la capa de ajuste y devolví la capa JPEG al modo de fusión Normal, tomé la herramienta Cuentagotas y busqué en toda la imagen un píxel que no se mostraba como RGB (255,255,255 ) en el panel de información. Nunca encontré uno. Esperaba ver los números parpadear un poco mientras revisaba la imagen, pero se mantuvieron firmes.
Solo puedo concluir que este es un caso degenerado del algoritmo de codificación: los bloques blancos puros permanecen blancos a través de la transformada discreta del coseno .
Curiosamente, esto no sucede con los bloques negros puros. Al menos con la implementación de Photoshop, se convierten en RGB (1,1,1) cuando se decodifican, no en RGB (0,0,0).
En pocas palabras, no necesita preocuparse por los puntos salpicados en esta área del borde cuando imprima una imagen producida utilizando la técnica anterior.
jpegtran
la función de recorte también se puede usar para extender. (Sin embargo, no estoy seguro de qué color terminan siendo los bordes extendidos.)jpegtran
también puede ampliar la imagen, pero siempre se rellena con un gris medio codificado, RGB (128,128,128). Lo hace simplemente porque es la única opción fácil, ya que en el espacio de coeficiente DCT, puede hacerlo con una simplebzero()
llamada. Intenté un truco salvaje para cambiar esto , lo que no funciona, pero debería darte una idea de la fealdad involucrada. levanta las manos frustradoEl punto a recordar aquí es que pierde calidad al guardar la foto en un formato de compresión con pérdida. Siempre que guarde la foto en un formato sin pérdidas (PSD, TIFF, etc.) después de agregar el borde, no perderá más datos de los que ya perdió al guardar la foto como JPEG en primer lugar.
fuente
No es bastante sin pérdidas, pero se puede llegar muy cerca usando GIMP (o algún otro editor con una característica similar) y los dos siguientes trucos:
Primero, asegúrese de que el borde que está agregando sea un múltiplo de 8 píxeles de ancho (y preferiblemente un múltiplo de 16 píxeles).
Esto es importante porque el algoritmo de compresión JPEG divide la imagen en bloques de 8 × 8 píxeles *, comenzando desde la esquina superior izquierda, y aplica el algoritmo de compresión con pérdida independientemente a cada bloque. Por lo tanto, al menos en principio, puede rellenar sin pérdidas una imagen JPEG agregando bloques completos de 8 × 8 píxeles alrededor de los existentes. Sin embargo, si intenta agregar un borde que no tenga un número entero de bloques de ancho, los bloques en la imagen acolchada no se alinearían con los del original, y sería inevitable alguna pérdida de compresión.
*) En realidad, la mayoría de las imágenes JPEG usan submuestreo de croma , lo que significa que solo la parte en escala de grises de la imagen se comprime en bloques de 8 × 8, mientras que los canales de croma se reducen en un 50% antes de la compresión, lo que hace que su tamaño de bloque efectivo sea 16 × 16 píxeles Por lo tanto, para obtener mejores resultados, el ancho de su borde debería ser realmente un múltiplo de 16 píxeles. Sin embargo, generalmente puede salirse con un borde de 8 (o 24 o 40, etc.) píxeles, ya que un poco de pérdida de compresión en el croma no es muy notable.
La segunda parte del truco es, al guardar la imagen final, seleccionar la casilla de verificación "Usar la configuración de calidad de la imagen original" en el cuadro de diálogo Exportar imagen como JPEG (en Configuración avanzada). ¡Haga esto incluso si parece que resultaría en una calidad inferior a la que usaría normalmente!
Esta configuración hace que GIMP reutilice exactamente la misma configuración de compresión que se usó para la imagen original, lo que generalmente elimina alrededor del 99% de las pérdidas de compresión, siempre que no haya editado la imagen demasiado, y en particular, que los bloques en el La nueva imagen todavía se alinea con las del original. (En ocasiones, todavía habrá algunas pérdidas debido a errores de redondeo, pero mucho menos de lo que habría de otra manera).
Como una demostración rápida, tomé esta imagen de prueba JPEG de Wikimedia Commons , originalmente guardada con una configuración de calidad bastante baja de 50, y agregué un elegante (tipo de) borde blanco y negro de 8px usando el método descrito anteriormente:
Aquí está la diferencia entre el original (15.1 kB) y la imagen editada (16.7 kB), que se muestra usando el modo de capa "Extracto de grano" de GIMP:
Puede ver algunos errores de croma muy leves, causados por el ancho del borde que no es un múltiplo de 16, y (si mira de cerca) algunos bloques donde también hubo pérdidas menores en el canal luma debido al redondeo. Aún así, visualmente, el original y la imagen acolchada son casi indistinguibles, incluso con un aumento de 2x y volteándose alternativamente entre ellos.
En particular, contraste esto con el resultado de aumentar la calidad JPEG de 50 a 60 antes de guardar la imagen acolchada, lo que produce la siguiente imagen de 17,6 kB:
Con un aumento alto, definitivamente puede ver que la imagen editada es notablemente más borrosa en algunos lugares que la original, y tomar la diferencia con el extracto de grano confirma esto:
fuente
Lo siento si esto no es exactamente lo que querías pero ...
Parece que agrega un borde blanco como ayuda para posicionar su imagen al imprimir. ¿Por qué no enfocarse en aprender las interfaces de impresión correctamente y evitar trucos poco fiables como este? El otro problema que esto plantea es si permite que el programa de impresión cambie el tamaño de su imagen 4680x3120 para que se ajuste a la resolución / DPI correcta. Esto podría tener un efecto más severo que volver a guardar un archivo JPEG.
fuente
Las respuestas anteriores son muy buenas.
Solo agregaré algunos "aspectos psicológicos" del formato jpg.
Si un jpg está bien preparado, pierde solo alrededor del 0,5% de información. Eso es en la gran mayoría de los casos algo que el ojo humano no puede ver. Necesita un programa para hacer un análisis y ver las diferencias (como el análisis que acaba de hacer Ilmari).
"Buena calidad" es un proceso, no solo la forma en que un formato de archivo guarda la imagen. Sí, recomprimiste el archivo con jpg una vez más porque realmente lo necesitabas. Si está en una situación controlada, está bien hacerlo.
Usted realmente necesita que implica que no se puede utilizar otro formato sin pérdida, usted tiene necesidades de almacenamiento o de software muy específico, o un flujo de trabajo muy apretado.
Si está realmente preocupado por la calidad, probablemente no estaría usando Paint. El formato JPG tiene algunas configuraciones que no puedes controlar en Paint.
Aquí está mi lista de programas gratuitos donde realmente puede controlar la compresión jpg, y la opción que necesita seleccionar. (Todos ellos en el diálogo de guardar jpg)
Irfanview: active Desactivar submuestreo de color de croma.
FastStone Image Viewer - Submuestreo de color: ninguno.
Gimp - Submuestreo 4: 4: 4
Conclusión. No uses pintura.
Una cosa que aún no he comprobado. Si todos estos programas mantienen el perfil de color incrustado. Editaré mi publicación más tarde.
fuente
IrfanView funciona bien para mí para conjuntos de imágenes. Aquí hay algunas notas prácticas
Aquí está mi procedimiento almacenado para la inserción del borde - Procedimiento Infran para agregar un borde
fuente