|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.09.2011, 10:43 | #1 |
Пользователь
Регистрация: 08.12.2009
Сообщений: 39
|
Очистка метаданных
Возникла потребность очищать метаданные в Tiff-файлах. А именно: "Имя программы", "Камера, изготовитель", "Камера, модель". Нашёл 2 способа, которыми можно это сделать, но при использовании обоих способов есть кое-какие проблемы.
Начало одинаковое: FileStream fileStream = File.Open(pathSaveFile, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite); BitmapDecoder decoder = TiffBitmapDecoder.Create(fileStream , BitmapCreateOptions.PreservePixelFo rmat, BitmapCacheOption.Default); 1 способ: BitmapFrame frame = decoder.Frames[0]; InPlaceBitmapMetadataWriter writer = frame.CreateInPlaceBitmapMetadataWr iter(); writer.SetQuery("System.Photo.Camer aManufacturer", ""); writer.SetQuery("System.Photo.Camer aModel", ""); writer.SetQuery("System.Application Name", ""); if (writer.TrySave()) { } else { } Хорошо отрабатывает, но только если убрать строку: writer.SetQuery("System.Application Name", ""); как только пытаюсь очистить ApplicationName, отказывается сохранять изменения. 2 способ: BitmapMetadata metadata = ((BitmapMetadata)decoder.Frames[0].Metadata).Clone(); metadata.CameraModel = metadata.CameraManufacturer = metadata.ApplicationName = ""; BitmapFrame frame = BitmapFrame.Create(decoder.Frames[0], decoder.Frames[0].Thumbnail, metadata, decoder.Frames[0].ColorContexts); BitmapEncoder encoder = new TiffBitmapEncoder(); ((TiffBitmapEncoder)encoder).Compre ssion = TiffCompressOption.Ccitt4; encoder.Frames.Add(frame); FileStream fileStreamResult = File.Open(pathSaveFile, FileMode.Create, FileAccess.Write); encoder.Save(fileStreamResult); Здесь же всё нормально очищается, но почему-то новый полученный файл весит больше чем исходный, заказчику это не нравится. Сжатие у них одинаковое ССITT T.6 Пожалуйста, подскажите, как очистить эти метаданные так, чтобы размер исходного файла совпадал с размером нового? |
03.10.2011, 13:33 | #2 |
Пользователь
Регистрация: 08.12.2009
Сообщений: 39
|
Всё, справился Нашёл в интернете бибилиотеку taglib-sharp, с помощью которой легко решается эта проблема.
TagLib.Tiff.File tiffFile = (TagLib.Tiff.File)TagLib.Tiff.File. Create(path); tiffFile.ImageTag.Software = ""; tiffFile.ImageTag.Model = ""; tiffFile.ImageTag.Make = ""; tiffFile.Save(); |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Очистка StringGrid | dubailand | Общие вопросы Delphi | 2 | 28.08.2011 02:17 |
Очистка БД dbase | ИВАНьКа | Общие вопросы C/C++ | 12 | 28.08.2009 12:28 |
очистка get | Gromsky | PHP | 1 | 19.08.2009 19:15 |
Изменение метаданных видео (?) | uprise | Софт | 0 | 14.06.2008 16:19 |