¿Cómo puedo guardar una imagen como un archivo PNG o JPG con un tamaño de archivo de salida dado? (pref. en C #)

StackOverflow https://stackoverflow.com/questions/421056

  •  05-07-2019
  •  | 
  •  

Pregunta

Me gustaría guardar una imagen existente como PNG o JPG en un tamaño de archivo determinado, por ejemplo, 100 KB.

¿Fue útil?

Solución

PNG usa compresión sin pérdida, por lo que no puede comprimirla por debajo de un cierto nivel.

En .NET puedes guardar un archivo JPG con compresión, y adivinar qué tan grande será el archivo cuando se complete.

http: // msdn.microsoft.com/en-us/library/system.drawing.image.save(VS.80).aspx - Consulte la sección " Guardar imagen JPEG con valor de compresión " sección.

Además, puede cambiar el tamaño de las dimensiones de la imagen para hacerla más pequeña.

Otros consejos

Solo si utiliza JPG 2000, puede establecer el tamaño del archivo en un valor específico. Al usar JPG, tendrás que probar diferentes valores de calidad y usar PNG te dará un tamaño para una imagen dada y un nivel de compresión; solo puedes intentar cambiar el tamaño de la imagen, lo que te dará un tamaño más pequeño.

También puedes intentar cambiar el tamaño de la imagen para que una imagen sin comprimir tenga el tamaño que deseas, pero luego PNG y especialmente JPG tendrán un tamaño de archivo mucho menor.

Para PNG no hay realmente una configuración de calidad, por lo que realmente no puedes controlar el tamaño del archivo.

Jpg tiene una configuración de calidad que determina la calidad de la imagen. ajustes de menor calidad dan como resultado archivos más pequeños. Sin embargo, normalmente no hay una opción para " dar la calidad necesaria para un archivo de tamaño x " ;.

Puedes lograr el mismo resultado utilizando un enfoque bastante ineficiente para convertir a jpg en la memoria, viendo qué tan grande es la salida, ajustando la calidad hacia arriba o hacia abajo y repitiendo hasta que te acerques lo suficiente. Puede sonar terrible, pero si sus imágenes no son demasiado grandes, es posible que nadie note la breve demora mientras lo hace.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top