J'ai une image JPEG avec un DPI de 72. Je veux changer de 72 dpi en 300 dpi.
Comment changer la résolution des images JPEG en utilisant C #?
Cet article parle de modifier les données EXIF sans ré-enregistrer/recompresser (et donc sans perte d'informations - il utilise en fait une "astuce"; il peut y avoir bibliothèques plus directes) requises par l'approche SetResolution
. Cela a été trouvé lors d'une recherche rapide sur Google, mais je voulais souligner que tout ce dont vous avez besoin pour modifier les données EXIF stockées.
Aussi: lib .NET pour la modification EXIF et un autre question SO . Google est propriétaire lorsque vous connaissez de bons termes de recherche.
Vous devez copier les bits sur une nouvelle image avec la résolution cible, comme ceci:
using (Bitmap bitmap = (Bitmap)Image.FromFile("file.jpg"))
{
using (Bitmap newBitmap = new Bitmap(bitmap))
{
newBitmap.SetResolution(300, 300);
newBitmap.Save("file300.jpg", ImageFormat.Jpeg);
}
}
Il s'agit simplement de mettre à l'échelle la largeur et la hauteur de l'image par le bon rapport. Tous les formats d'images ne prennent pas en charge une métabalise DPI, et lorsqu'ils le font, tout ce qu'ils disent à votre logiciel graphique est de diviser l'image par le rapport fourni.
Par exemple, si vous exportez une image de 300 dpi de Photoshop vers un JPEG, l'image apparaîtra très grande lorsqu'elle sera visualisée dans votre logiciel de visualisation d'images. En effet, les informations DPI ne sont pas prises en charge en JPEG et sont supprimées lors de leur enregistrement. Cela signifie que votre visionneuse d'image ne sait pas par quel rapport diviser l'image et affiche plutôt l'image au rapport 1: 1.
Pour obtenir le rapport dont vous avez besoin pour mettre l'image à l'échelle, consultez le code ci-dessous. N'oubliez pas que cela va étirer l'image, tout comme dans Photoshop. Vous quadruplez essentiellement la taille de l'image, de sorte qu'elle va s'étirer et peut produire des artefacts.
Pseudo code
ratio = 300.0 / 72.0 // 4.167
image.width * ratio
image.height * ratio