J'ai une fonction qui prend un bitmap, en copie une partie et l'enregistre en tant que 8bpp tiff. Le nom de fichier de l'image de résultat est unique et le fichier n'existe pas, le programme a l'autorisation d'écrire dans le dossier cible.System.Drawing.Image.Save throws ExternalException: Une erreur générique s'est produite dans GDI
void CropImage(Bitmap map) {
Bitmap croped = new Bitmap(200, 50);
using (Graphics g = Graphics.FromImage(croped)) {
g.DrawImage(map, new Rectangle(0, 0, 200, 50), ...);
}
var encoderParams = new EncoderParameters(2);
encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.ColorDepth, 8L);
encoderParams.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionNone);
croped.Save(filename, tiffEncoder, encoderParams);
croped.Dispose();
}
chose étrange est que ce funcion fonctionne bien sur certains ordinateurs (Win 7) et jette System.Runtime.InteropServices.ExternalException: Une erreur générique est produite dans GDI exception sur d'autres ordinateurs (la plupart du temps Win XP).
Tous les ordinateurs ont l'environnement d'exécution .NET 3.5 SP1 installé.
Si j'utilise croped.Save(filename, ImageFormat.Tiff);
au lieu de croped.Save(filename, tiffEncoder, encoderParams);
cela fonctionne sur tous les ordinateurs, mais j'ai besoin de sauvegarder Tiff au format 8bpp.
Avez-vous des idées, où le problème pourrait être?
Merci, Lukas
peut-être que la photo n'est pas encore enregistrée et commence à être éliminée? – serhio
Existe-t-il des machines Windows XP sur lesquelles cela fonctionne? – SLaks
GDI + a été mis à jour vers la version 1.1 dans Vista. Je n'ai jamais trouvé de document décrivant les changements. On dirait que vous en avez trouvé un. –