private static void adicionaMetadadosNaImagem(ItemDePauta item) { String caminhoArquivoOrigem = Path.Combine(ConfigurationManager.AppSettings["caminhoEntrada"], item.nomeArquivoImagem); String caminhoSaida = Path.Combine(ConfigurationManager.AppSettings["caminhoSaida"], item.nomeImagemNaPauta + "_" + item.nomeArquivoImagem); using (Stream file = File.Open(caminhoArquivoOrigem, FileMode.Open, FileAccess.ReadWrite)) { BitmapDecoder decoder = BitmapDecoder.Create(file, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.None); JpegBitmapEncoder encoder = new JpegBitmapEncoder(); if (decoder.Frames[0] != null && decoder.Frames[0].Metadata != null) { BitmapFrame frameCopy = (BitmapFrame)decoder.Frames[0].Clone(); BitmapMetadata metadata = decoder.Frames[0].Metadata.Clone() as BitmapMetadata; try { metadata.SetQuery("/xmp/dc:description/x-default", item.descricao); } catch (Exception) { metadata.SetQuery("/xmp/dc:description", item.descricao); } metadata.SetQuery("System.Keywords", item.palavrasChave); metadata.Copyright = item.copyright; encoder.Frames.Add(BitmapFrame.Create(frameCopy, frameCopy.Thumbnail, metadata, frameCopy.ColorContexts)); using (Stream outputFile = File.Open(caminhoSaida, FileMode.Create, FileAccess.ReadWrite)) { encoder.Save(outputFile); } } } }
internal static void processaImagem(ItemDePauta item) { String caminhoArquivoOrigem = Path.Combine(ConfigurationManager.AppSettings["caminhoEntrada"], item.nomeArquivoImagem); using (Stream fs = File.Open(caminhoArquivoOrigem, FileMode.Open, FileAccess.ReadWrite)) { BitmapDecoder decoder = BitmapDecoder.Create(fs, BitmapCreateOptions.None, BitmapCacheOption.Default); BitmapFrame frame = decoder.Frames[0]; BitmapMetadata metadata = frame.Metadata as BitmapMetadata; item.palavrasChave = montaListaComItensNovosEVelhos(item.palavrasChave, metadata); } adicionaMetadadosNaImagem(item); }
private static void processaItemDePauta(FileInfo[] arquivos, ItemDePauta item) { try { if (item.nomeArquivoImagem == "nomeArquivo") item.nomeArquivoImagem = recuperaNomeDoArquivo(item.identificadorImagem, arquivos); ManipuladorDeMetadadoJPEG.processaImagem(item); String mensagemSucesso = String.Format("Arquivo {0} processado com sucesso.", item.nomeImagemNaPauta); Console.WriteLine(mensagemSucesso); log.Info(mensagemSucesso); } catch (Exception ex) { Console.WriteLine(String.Format("Arquivo {0} processado com erro", item.nomeImagemNaPauta)); log.Error(String.Format("Arquivo {0} processado com erro {1}.", item.nomeImagemNaPauta, ex.ToString())); } }