Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: UsuarioZ en 25 Febrero 2022, 23:13 pm



Título: Imagenes AVIF mas pesadas que JPG (?
Publicado por: UsuarioZ en 25 Febrero 2022, 23:13 pm
Hola, estoy usando "gulp-avif" de npm para convertir imágenes de JPG o PNG a AVIF, para que queden mas livianas, pero me están quedando mas pesadas,  por algun motivo (2-3kb mas)..

En Webp si se reduce bastante el tamaño, por el momento estoy usando ese formato, pero me gustaría implementar avif también, ya que leí que normalmente son mas livianas y se usaran mas a futuro.

Tarea de gulpfile:

Código:
function versionAvif() {
    return src(paths.imagenes)
        .pipe( avif() )
        .pipe(dest('build/img'))
        .pipe(notify({ message: 'Imagen Completada Avif'}));
}


(https://i.ibb.co/Vm36N9y/Captura-de-pantalla-23.png)



Título: Re: Imagenes AVIF mas pesadas que JPG (?
Publicado por: Danielㅤ en 25 Febrero 2022, 23:29 pm
Hola, es probable que pase eso porque la compresión del formato jpg es mejor y mayor que la de avif y claro al no poder reducir más tamaño del que ya tiene, entonces hace lo contrario, aumentarlo.

Supongo que eso sucede porque son imágenes de tamaños demasiado pequeños, prueba con imágenes jpg mayores de 1 MB para verificar si reduce el tamaño.


Saludos


Título: Re: Imagenes AVIF mas pesadas que JPG (?
Publicado por: UsuarioZ en 26 Febrero 2022, 00:02 am
Hola, es probable que pase eso porque la compresión del formato jpg es mejor y mayor que la de avif y claro al no poder reducir más tamaño del que ya tiene, entonces hace lo contrario, aumentarlo.

Supongo que eso sucede porque son imágenes de tamaños demasiado pequeños, prueba con imágenes jpg mayores de 1 MB para verificar si reduce el tamaño.


Saludos

Hola, me olvide de mencionar que las JPG de la captura son optimizadas por "image-min", convirtiendo una de 1,2mb, me quedo en 456kb avif, 190kb jpg, y 90kb webp, luego intente con una de 9kb y si le subió el tamaño a 11kb en avif.

Código:
function imagenes() {
    return src(paths.imagenes)
        .pipe(cache(imagemin({ optimizationLevel: 3})))
        .pipe(dest('build/img'))
        .pipe(notify({ message: 'Imagen Completada'}));
}

Código:
function versionWebp() {
    return src(paths.imagenes)
        .pipe( webp() )
        .pipe(dest('build/img'))
        .pipe(notify({ message: 'Imagen Completada Webp'}));
}


Título: Re: Imagenes AVIF mas pesadas que JPG (?
Publicado por: @XSStringManolo en 26 Febrero 2022, 02:11 am
Es debido al algoritmo de compresión.

Si comprimo la palabra hola a números con un algoritmo hipotético que pase las letras a su orden alfabético y que añada una letra indicando las veces que se repite la secuencia:

h o l a
a 8 15 12 1

Hola pesa 4 bytes.
a815121 pesa 7 bytes (a indica que solo aparece 1 vez la secuencia)

Si en cambio la palabra es holahola
h o l a h o l a
b 8 15 12 1

holahola pesa 8 bytes.
b815121 pesa 7 bytes (b indica que aparece 2 veces la secuencia)

Esto significa, que aunque este algoritmo fuese la releche para comprimir imágenes, hay veces, que es peor usarlo que no usarlo y eso es probablemente lo que te sucede al convertir imágenes ya comprimidas en jpg a avif. Si pruebas con una imagen raw de cámara, una imagen mucho mas grande o simplemente pruebas con múltiples imágenes aleatorias, verás que en algunos casos avif es mejor y en otros lo es jpg/png. Depende de la data y los algoritmos.



Título: Re: Imagenes AVIF mas pesadas que JPG (?
Publicado por: MinusFour en 26 Febrero 2022, 05:34 am
El nivel de calidad de gulp-avif es de 90.

Citar
options.quality number quality, integer 1-100 (optional, default 90)

El de webp es 75:

Citar
quality
Type: number
Default: 75

Set quality factor between 0 and 100.

A simple vista, yo diría que el nivel de calidad que utiliza imagemin es mucho menor que webp y avif.


Título: Re: Imagenes AVIF mas pesadas que JPG (?
Publicado por: Serapis en 26 Febrero 2022, 15:03 pm
Comprimir imágenes ya comprimidas, será harto dífícil poder lograr mejor compresión, en cambio aumentará el tiempo de descompresión porque primero se debe decodificar a jpg y luego al mapa de bits.

Si en cambio tomas el mapa de bits que genera el jpg (esto es descomprimido el jpg), y lo comprimes, esa pérdida en rendimiento de decodificación no se producirá (al menos no tanto como la suma de los dos), pero ahora lo que sucede es que cae la calidad, porque al ser algoritmos de compresión con pérdidas, a la pérdida que produce el jpg tienes que sumarla la pérdida que produzca el nuevo algoritmo.

En resumen: Si quieres usar un nuevo formao, úsalo desde los mapas de bits originales (en RAW, como te han dicho), de otro modo acabas perdiendo tiempo o calidad, a cambio de ganar un espacio mínimo en disco en una época en la que el espacio en disco no es tan preocupante como siempre lo fue en el pasado.