Je rencontre des problèmes lors de l'utilisation de WPF pour redimensionner des images, dans la mesure où les images sont floues à certaines résolutions. Je suis en train d'écrire ces fichiers dans les fichiers, donc SnapToDevicePixels
ne va pas aider (je ne suis même pas dans une application WPF, je ne fais référence à System.Windows
). Je comprends que cela est lié à l'indépendance des pixels de l'appareil dans WPF, mais j'ai maintenant besoin de savoir comment je peux calculer le décalage des pixels de telle sorte que j'obtiens des images nettes.Formule pour déterminer le décalage correct pour les images redimensionnées wpf
0
A
Répondre
0
Est-il nécessaire d'utiliser WPF? Ce code à base GDI que nous utilisons produit d'excellents pouvoirs Redimensionnement:
public static Size ResizeImage(
string fileName,
string targetFileName,
Size boundingSize,
string targetMimeType,
long quality)
{
ImageCodecInfo imageCodecInfo =
ImageCodecInfo
.GetImageEncoders()
.Single(i => i.MimeType == targetMimeType);
EncoderParameters encoderParams = new EncoderParameters(1);
encoderParams.Param[0] =
new EncoderParameter(Encoder.Quality, quality);
using (FileStream fs = File.OpenRead(fileName))
{
Image img ;
try
{
img = Image.FromStream(fs, true, true);
}
catch (ArgumentException ex)
{
throw new FileFormatException("cannot decode image",ex);
}
using (img)
{
double targetAspectRatio =
((double)boundingSize.Width)/boundingSize.Height;
double srcAspectRatio = ((double)img.Width)/img.Height;
int targetWidth = boundingSize.Width;
int targetHeight = boundingSize.Height;
if (srcAspectRatio > targetAspectRatio)
{
double h = targetWidth/srcAspectRatio;
targetHeight = Convert.ToInt32(Math.Round(h));
}
else
{
double w = targetHeight * srcAspectRatio;
targetWidth = Convert.ToInt32(Math.Round(w));
}
using (Image thumbNail = new Bitmap(targetWidth, targetHeight))
using (Graphics g = Graphics.FromImage(thumbNail))
{
g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
Rectangle rect =
new Rectangle(0, 0, targetWidth, targetHeight);
g.DrawImage(img, rect);
thumbNail.Save(
targetFileName, imageCodecInfo, encoderParams);
}
return new Size(targetWidth, targetHeight);
}
}
}
Questions connexes
- 1. décalage calcul correct pour IE?
- 2. Docbook, images déjà redimensionnées
- 3. Animation pour les images wpf
- 4. Déterminer le décalage d'image
- 5. Comment calculer le décalage correct?
- 6. Fancybox - Les images ne sont pas redimensionnées
- 7. label.setVisible (true) dans le panneau pour les images si correct
- 8. Les images ne sont pas redimensionnées dans les navigateurs
- 9. imageview Exception OutOfMemoryError: essayer de mettre en cache les images redimensionnées pour éviter l'exception
- 10. Images pixélisées lorsque redimensionnées dans WinRT
- 11. Télécharger redimensionnées image pour S3
- 12. Pourquoi les images redimensionnées OpenGL-ES ont-elles l'air pixellisées?
- 13. Les images redimensionnées ne sont pas lisses en flexion
- 14. Calculer le décalage pour ScrollToVerticalOffset à partir du numéro de ligne dans un WPF RichTextBox
- 15. Création de plusieurs images redimensionnées dans codeigniter?
- 16. Déterminer la formule pour deux objets dans l'espace 3D
- 17. Les images téléchargées Wordpress ne seront pas redimensionnées
- 18. Formule pour le calcul d'une table éphémérides
- 19. Les images ne sont redimensionnées que dans Chrome?
- 20. formule Excel pour le temps
- 21. formules pour le tampon décalage
- 22. Comment faire pour déterminer WPF SelectedItem pour une fenêtre
- 23. l'image WPF décalage
- 24. Comment puis-je déterminer le codage correct?
- 25. Utilisation de MATLAB pour calculer le décalage entre les images successives
- 26. Les images redimensionnées par lots sur le serveur, maintenant les tailles d'image sont erronées dans Wordpress
- 27. Déterminer le chemin chargé pour les DLL
- 28. WPF C# - Utiliser Xaml pour charger le dossier des images
- 29. Impossible d'obtenir décalage correct de flotta div
- 30. Utiliser automatiquement les images redimensionnées au lieu des originaux dans le format d'image Wordpress?
GDI est le repli, mais nous avons rencontré des problèmes qui nécessitaient beaucoup de verrouillage pour se déplacer dans le passé, et selon les étiquettes sur la boîte, WPF est censé être plus rapide pour ce genre de chose. Nous avons déjà utilisé WPF pendant un certain temps, et nous avons déjà atteint la plupart des problèmes de démarrage que nous verrons à l'échelle. Cela peut sembler comme un coût submergé, mais cela semble être un problème mineur avec ce qui, je l'espère, sera une solution isolée simple, ce qui signifie que je n'ai pas besoin de réécrire une grande partie d'une solution existante. – Khanzor