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);
        }
Esempio n. 3
0
        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()));
            }
        }