Su alcuni file .JPG (anteprime EPS, generate da Adobe Illustrator) in Windows 7 InPlaceBitmapMetadataWriter.TrySave() restituisce true dopo alcune chiamate SetQuery(), ma non fa nulla.InPlaceBitmapMetadataWriter.TrySave() restituisce true ma non fa nulla
codice di esempio:
BitmapDecoder decoder;
BitmapFrame frame;
BitmapMetadata metadata;
InPlaceBitmapMetadataWriter writer;
decoder = BitmapDecoder.Create(s, BitmapCreateOptions.PreservePixelFormat | BitmapCreateOptions.IgnoreColorProfile, BitmapCacheOption.Default);
frame = decoder.Frames[0];
metadata = frame.Metadata as BitmapMetadata;
writer = frame.CreateInPlaceBitmapMetadataWriter();
try {
writer.SetQuery("System.Title", title);
writer.SetQuery(@"/app1/ifd/{ushort=" + exiftagids[0] + "} ", (title + '\0').ToCharArray());
writer.SetQuery(@"/app13/irb/8bimiptc/iptc/object name", title);
return writer.TrySave();
}
catch {
return false;
}
È possibile riprodurre il problema (se si dispone di Windows 7) scaricando campione di immagine e l'utilizzo di questo esempio di codice per impostare il titolo su questa immagine. L'immagine ha spazio sufficiente per i metadati e questo esempio di codice funziona correttamente sul mio WinXP. Lo stesso codice funziona bene su Win7 con altri file .JPG.
Tutte le idee sono benvenute :)
TrySave() restituisce _true_! Ma non fa niente. Quindi non c'è modo di scoprire se i metadati sono scritti o meno. – mephisto123
Lazo, non esiste un metodo di salvataggio per encoder in .NET 4. – Roger