J'ai besoin d'afficher les vignettes de prévisualisation des images haute résolution dans un contrôle pour la sélection de l'utilisateur. J'utilise actuellement ImageListView pour charger les images. Cela fonctionne bien pour les images de basse et moyenne résolution, mais lorsqu'il s'agit d'afficher des vignettes d'images de très haute résolution, le retard est notable. Un exemple d'image peut être téléchargé à l'adresse suivante https://drive.google.com/open?id=1Qgu_aVXBiMlbHluJFU4fBvmFC45-E81C
La taille de l'image est d'environ 5000x3000 pixels et sa taille est d'environ 12 MB. Le problème peut être reproduit en utilisant 1000 copies de cette image.
La capture d'écran du problème est téléchargée ici
https://giphy.com/gifs/ZEH3T3JTfN42OL3J1A
Les images sont chargées en utilisant un travailleur d'arrière-plan
foreach (var f in filepaths)
{
imageListView1.Items.Add(f);
}
1. Afin de résoudre ce problème, j'ai essayé de redimensionner des images de grande résolution et d'ajouter l'image redimensionnée à ImageListView ... mais pour le redimensionnement, il y a une forte consommation de temps et la génération de vignettes est lente.
Bitmap x = UpdatedResizeImage2(new Bitmap(f), new Size(1000, 1000));
string q = Path.GetTempPath() + Path.GetFileName(f);
x.Save(Path.GetTempPath() + Path.GetFileName(f));
x.Dispose();
imageListView1.Items.Add(Path.GetTempPath() + Path.GetFileName(f));
2. J'ai également essayé Image.CreateThumbnail
mais cette méthode est également très lente.
Existe-t-il une meilleure façon de résoudre ce problème ?