Mon application ASP.NET comporte des fonctions de recadrage et de redimensionnement d'image. Cela nécessite que l'image temporaire téléchargée soit supprimée. Tout fonctionne bien, mais quand j'essaie de supprimer une image plus grande que 80px par 80px, j'obtiens une erreur "Le fichier est verrouillé par un autre processus ...", même si j'ai libéré toutes les ressources.Pourquoi GDI ne me laisse-t-il pas supprimer de grandes images?
Voici un extrait:
System.Drawing.Image tempimg = System.Drawing.Image.FromFile(temppath);
System.Drawing.Image img = (System.Drawing.Image) tempimg.Clone(); //advice from another forum
tempimg.Dispose();
img = resizeImage(img, 200, 200); //delete only works if it's 80, 80
img.Save(newpath);
img.Dispose();
File.Delete(temppath);
Ce code est incorrect. La documentation pour Image.FromStream indique "Vous devez garder le flux ouvert pour la durée de vie de l'image." Le code ci-dessus ne le fait pas. Et, s'il le faisait, le fichier resterait verrouillé. –
J'ai édité ma réponse. Vous avez maintenant un flux qui reste ouvert et le fichier ne sera pas verrouillé. – codymanix