Qualité de redimensionnement de l'image (Java)

J'ai un open-source application qui télécharge les photos de Facebook. Pour économiser de la bande passante, les photos sont automatiquement redimensionnées avant de les télécharger (Facebook impose une limite de taille maximale). Quelques personnes se sont plaints de la qualité de la photo, et en fait, vous pouvez voir la différence (voir ce problème pour quelques images de démo).

Donc ma question est, quelle est la "meilleure" façon de réduire les images (c'est à dire des photos) en Java, sans perte de qualité, ou au moins, avec un minimum de perte de qualité /artefacts?

Vous pouvez voir le code actuel, j'ai ici (code de redimensionnement via cette page).

source d'informationauteur