Se puede calcular un nivel de información aproximada de la imagen al tomar el tamaño de la imagen original dividida por el número de píxeles:
info = fileSize/(width * height);
tengo una imagen que es 369636 bytes y 1200x800 píxeles, por lo que utiliza ~ 0.385 bytes por pixel
Tengo una versión más pequeña que tiene 101111 bytes y 600x400 píxeles, por lo que usa ~ 0.4213 bytes por píxel.
Al reducir una imagen, verá que generalmente contendrá un poco más de información por píxel, en este caso aproximadamente un 9% más. Dependiendo de su tipo de imágenes y la cantidad que reducir su tamaño, debe ser capaz de calcular un promedio de la cantidad de la ración de la información/píxel aumenta (c), por lo que se puede calcular un tamaño aproximado:
newFileSize = (fileSize/(width * height)) * (newWidth * newHeight) * c
de esto se puede extraer una fórmula para el tamaño que tiene que hacer una imagen para llegar a un tamaño de archivo específico:
newWidth * newHeight = (newFileSize/fileSize) * (width * height)/c
esto le dará bastante cerca del tamaño de archivo deseado. Si desea acercarse, puede cambiar el tamaño de la imagen al tamaño calculado, comprimirla y calcular un nuevo valor de bytes por píxel a partir del tamaño del archivo que obtuvo.
¿Qué tipo de imagen? –