Clique abaixo para nos ajudar
Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
10 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 10 Visitantes :: 2 Motores de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Últimos assuntos
» Ajuda a direcionar
8/12/2016, 01:17 por miiiih

» Alterar uma palavra num arquivo de texto
5/12/2016, 12:02 por Teseu

» Buscar endereço por CEP
3/12/2016, 19:59 por pedrossian

» USAR WEBSERVICE NO VFP9
2/12/2016, 09:50 por AJC

» BANIMENTO DE USUARIO
17/11/2016, 08:31 por FAF

» Impressora Ticket
15/11/2016, 09:20 por clima238

» Gráfico
9/11/2016, 10:43 por hidroluz

» TRANSPOR TABELA
9/11/2016, 10:34 por hidroluz

» MUDANÇA DO .DBF PARA POTSGREE
9/11/2016, 09:12 por AJC

» Website com videoaulas sobre linguagens de programação
8/11/2016, 09:56 por JLDR

» Parceria para desenvolvimento de template em Wordpress
7/11/2016, 19:15 por mindix

» Data fica invertida na planilha que é gerada via programa.
27/10/2016, 11:00 por Linghston

» Maximizar report direto do menu
21/10/2016, 20:48 por Rosangela Pires

» Fechar form com tempo
21/10/2016, 10:15 por Rosangela Pires

» URGENTE: Ajuda com impressora ELGIN-L42
14/10/2016, 09:53 por megasoft

» Opções para gerar NF-e
10/10/2016, 09:07 por mavsinfo

» Google Maps
8/10/2016, 15:08 por Rosangela Pires

» Mysql
5/10/2016, 11:22 por Marcos Guedes

» Acessando Banco em MYSQL de um projeto WORDPRESS
3/10/2016, 10:58 por Marcos Guedes

» OPTION SELECT MOSTRAR CAMPOS QUASE PRONTO
26/9/2016, 21:09 por BobKuspe

Alterar uma palavra num arquivo de texto

5/12/2016, 12:02 por Teseu

Olá prezados colegas de programação!

Este é eu primeiro post no fórum e gostaria de poder …

Comentários: 0

Buscar endereço por CEP

3/12/2016, 19:59 por pedrossian

Caros amigos, meu código para buscar endereço pelo CEP não funciona mais.
Alguém pode me …

Comentários: 0

USAR WEBSERVICE NO VFP9

2/12/2016, 09:50 por AJC

Pessoal, preciso de um material ou livro que me traga instruções como
usar a consumação de …

Comentários: 0

BANIMENTO DE USUARIO

13/11/2016, 16:21 por FAF

A usuária ROSANGELA PIRES ao tentar acessar o Forum obtem sempre a mensagem de BANIMENTO.
A mesma …

Comentários: 3

Impressora Ticket

15/11/2016, 09:20 por clima238

Bom dia,
Por favor alguém me explique porque o código abaixo imprime no ecrã em vez do printer: …

Comentários: 0

Estatísticas
Temos 6964 usuários registrados
O último usuário registrado atende pelo nome de Ricardo Cassolatto

Os nossos membros postaram um total de 17119 mensagens em 2577 assuntos

Tiff Em Multiplas Páginas

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Tiff Em Multiplas Páginas

Mensagem por jeovacnp2007 em 25/6/2015, 15:05

Boa tarde, preciso fazer com que o meu setemesinha faça com que várias imagens tif seja carregadas no contêiner de uma única vez para ser salva em um único arquivo tif. Só a parte do código que não está funcionando é o carregamento de múltiplas no contêiner. Segue abaixo o código que eu tenho.
A parte que tem adaptada por mim não é válida é só uma parte de outro código que eu não consegui funcionar.


Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
using System.IO;
using System.Security;



namespace SaveMultipageTiffArticle
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnLoadImage_Click(object sender, EventArgs e)
        {
            OpenFileDialog op = new OpenFileDialog();
            op.InitialDirectory = @"C:\";
            op.RestoreDirectory = true;
            op.Title = "Selecione as Imagens!";
            op.DefaultExt = "tif";
            op.Filter = "txt files (*.tif)|*.tif|All files (*.*)|*.*";
            op.FilterIndex = 2;
            op.CheckFileExists = true;
            op.CheckPathExists = true;
            txtArquivo.Text = op.FileName;
            op.Multiselect = true;
            
            //Original
            if (op.ShowDialog() == DialogResult.OK)
            {
                string filename=op.FileName.ToString();
                createPanel(filename);

            }
            /*
            //Inicio da Adaptação Jeová
            DialogResult dr = op.ShowDialog();
            if (dr == System.Windows.Forms.DialogResult.OK)
            {
                // Le os arquivos selecionados
                foreach (String file in op.FileNames)
                {
                    txtArquivo.Text += file;
                    // cria um PictureBox
                    try
                    {
                        PictureBox pb = new PictureBox();
                        Image Imagem = Image.FromFile(file);
                        pb.SizeMode = PictureBoxSizeMode.StretchImage;
                        //para exibir as imagens em tamanho natural
                        //descomente as linhas abaixo e comente as duas seguintes
                        //pb.Height = loadedImage.Height;
                        //pb.Width = loadedImage.Width;
                        pb.Height = 100;
                        pb.Width = 100;
                        //atribui a imagem ao PictureBox - pb
                        pb.Image = Imagem;
                        //inclui a imagem no containter flowLayoutPanel
                        panel2.Controls.Add(pb);
                    }
                    catch (SecurityException ex)
                    {
                        // O usuário  não possui permissão para ler arquivos
                        MessageBox.Show("Erro de segurança Contate o administrador de segurança da rede.\n\n" +
                                        "Mensagem : " + ex.Message + "\n\n" +
                                        "Detalhes (enviar ao suporte):\n\n" + ex.StackTrace);
                    }
                    catch (Exception ex)
                    {
                        // Não pode carregar a imagem (problemas de permissão)
                        MessageBox.Show("Não é possível exibir a imagem : " + file.Substring(file.LastIndexOf('\\'))
                                        + ". Você pode não ter permissão para ler o arquivo , ou " +
                                        " ele pode estar corrompido.\n\nErro reportado : " + ex.Message);
                    }
                    //Final da Adaptação Jeová
                    */
        }

        int firstpanel = 0;
        private void createPanel(string filename)
        {
            Image loadImage = Image.FromFile(filename);

            Panel p = new Panel();
            if (firstpanel == 0)
            {
                p.BackColor = System.Drawing.Color.PeachPuff;
                p.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
                p.Location = new System.Drawing.Point(15, 10);
                p.Size = new System.Drawing.Size(112, 100);
                firstpanel = 1;
            }
            else
            {
                p.BackColor = System.Drawing.Color.PeachPuff;
                p.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
                p.Location = new System.Drawing.Point(((Panel)PanelContainer[PanelContainer.Count - 1]).Left, ((Panel)PanelContainer[PanelContainer.Count - 1]).Bottom + 5);
                p.Size = new System.Drawing.Size(112, 100);

            }
            p.Visible = true;
            p.TabIndex = PanelContainer.Count;
            p.BackgroundImage = loadImage;
            p.BackgroundImageLayout = ImageLayout.Zoom;
            panel2.Controls.Add(p);
            PanelContainer.Add(p);              

        }



        private ArrayList PanelContainer = new ArrayList();

        
        
        Image[] scannedImages;

        private void btnMultipageTiff_Click(object sender, EventArgs e)
        {
            SaveFileDialog sav = new SaveFileDialog();
            //sav.Filter = "*.tif|*.tiff";
            if (sav.ShowDialog() == DialogResult.OK)
            {
                doMultipageTiffSave(sav.FileName);
            }
            

        }

        

        private void btnExisting_Click(object sender, EventArgs e)
        {
            OpenFileDialog sav = new OpenFileDialog();
        // sav.Filter = "*.tif|*.tiff";
            if (sav.ShowDialog() == DialogResult.OK)
            {
                doExistingFileSave(sav.FileName);
            }

            

        }

        private void doMultipageTiffSave(string loc)
        {
            if (PanelContainer.Count > 0)
            {
                scannedImages = new Image[PanelContainer.Count];
                bool isSave = false;
                int j = 0;

                try
                {
                    foreach (Panel p in PanelContainer)
                    {
                        scannedImages[j] = p.BackgroundImage;
                        j++;
                        isSave = true;
                    }


                    bool res = false;
                    if (isSave)
                    {
                        res = saveMultipage(scannedImages, loc, "TIFF");
                    }

                    if (res)
                    {
                        MessageBox.Show("Imagens salvas com sucesso!");
                    }
                }
                catch (System.Exception ee)
                {
                    MessageBox.Show(ee.Message);
                }
            }
            
        }
        private void doExistingFileSave(string loc)
        {
            if (PanelContainer.Count > 0)
            {
                scannedImages = new Image[PanelContainer.Count];
                bool isSave = false;
                int j = 0;

                try
                {
                    foreach (Panel p in PanelContainer)
                    {
                        scannedImages[j] = p.BackgroundImage;
                        j++;
                        isSave = true;
                    }
                    bool res = false;
                    if (isSave)
                    {
                        res = saveToExistingFile(loc, scannedImages, "TIFF");
                    }

                    if (res)
                    {
                        MessageBox.Show("Imagens com sucesso!");
                    }
                }
                catch (System.Exception ee)
                {
                    MessageBox.Show(ee.Message);
                }

            }
        }


        public bool saveMultipage(Image[] bmp, string location, string type)
        {
            if (bmp != null)
            {
                try
                {
                    ImageCodecInfo codecInfo = getCodecForstring(type);

                    for (int i = 0; i < bmp.Length; i++)
                    {
                        if (bmp[i] == null)
                            break;
                        bmp[i] = (Image)ConvertToBitonal((Bitmap)bmp[i]);
                    }

                    if (bmp.Length == 1)
                    {

                        EncoderParameters iparams = new EncoderParameters(1);
                        Encoder iparam = Encoder.Compression;
                        EncoderParameter iparamPara = new EncoderParameter(iparam, (long)(EncoderValue.CompressionCCITT4));
                        iparams.Param[0] = iparamPara;
                        bmp[0].Save(location, codecInfo, iparams);


                    }
                    else if (bmp.Length > 1)
                    {

                        Encoder saveEncoder;
                        Encoder compressionEncoder;
                        EncoderParameter SaveEncodeParam;
                        EncoderParameter CompressionEncodeParam;
                        EncoderParameters EncoderParams = new EncoderParameters(2);

                        saveEncoder = Encoder.SaveFlag;
                        compressionEncoder = Encoder.Compression;

                        // Save the first page (frame).
                        SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.MultiFrame);
                        CompressionEncodeParam = new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionCCITT4);
                        EncoderParams.Param[0] = CompressionEncodeParam;
                        EncoderParams.Param[1] = SaveEncodeParam;

                        File.Delete(location);
                        bmp[0].Save(location, codecInfo, EncoderParams);


                        for (int i = 1; i < bmp.Length; i++)
                        {
                            if (bmp[i] == null)
                                break;

                            SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.FrameDimensionPage);
                            CompressionEncodeParam = new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionCCITT4);
                            EncoderParams.Param[0] = CompressionEncodeParam;
                            EncoderParams.Param[1] = SaveEncodeParam;
                            bmp[0].SaveAdd(bmp[i], EncoderParams);

                        }

                        SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.Flush);
                        EncoderParams.Param[0] = SaveEncodeParam;
                        bmp[0].SaveAdd(EncoderParams);
                    }
                    return true;


                }
                catch (System.Exception ee)
                {
                    throw new Exception(ee.Message + "  Error in saving as multipage ");
                }
            }
            else
                return false;

        }
        private ImageCodecInfo getCodecForstring(string type)
        {
            ImageCodecInfo[] info = ImageCodecInfo.GetImageEncoders();

            for (int i = 0; i < info.Length; i++)
            {
                string EnumName = type.ToString();
                if (info[i].FormatDescription.Equals(EnumName))
                {
                    return info[i];
                }
            }

            return null;

        }



        //This function can save newly scanned images on existing single page or multipage file
        public bool saveToExistingFile(string fileName, Image[] bmp, string type)
        {
            try
            {
                //bmp[0] is containing Image from Existing file on which we will append newly scanned Images
                //SO first we will dicide wheter existing file is single page or multipage

                Image origionalFile = null;





                FileStream fr = File.Open(fileName, FileMode.Open, FileAccess.ReadWrite);
                origionalFile = Image.FromStream(fr);
                int PageNumber = getPageNumber(origionalFile);

                if (bmp != null)
                {
                    for (int i = 0; i < bmp.Length; i++)
                    {
                        bmp[i] = (Image)ConvertToBitonal((Bitmap)bmp[i]);
                    }

                    if (PageNumber > 1)//Existing File is multi page tiff file
                    {
                        saveImageExistingMultiplePage(bmp, origionalFile, type, PageNumber, "shreeTemp.tif");

                    }
                    else if (PageNumber == 1)//Existing file is single page file
                    {
                        saveImageExistingSinglePage(bmp, origionalFile, type, "shreeTemp.tif");
                    }

                }
                else
                {
                    throw new Exception("Please give existing File and newly scanned image");
                }
                fr.Flush();
                fr.Close();

                System.IO.File.Replace("shreeTemp.tif", fileName, "Backup.tif", true);


                return true;


            }
            catch (System.Exception ee)
            {
                throw new Exception(ee.Message + "  Error in saving as multipage ");
            }
            return false;

        }

        private void saveImageExistingSinglePage(Image[] bmp, Image origionalFile, string type, string location)
        {
            try
            {
                //Now load the Codecs
                ImageCodecInfo codecInfo = getCodecForstring(type);

                Encoder saveEncoder;
                Encoder compressionEncoder;
                EncoderParameter SaveEncodeParam;
                EncoderParameter CompressionEncodeParam;
                EncoderParameters EncoderParams = new EncoderParameters(2);

                saveEncoder = Encoder.SaveFlag;
                compressionEncoder = Encoder.Compression;


                //Me._img.SelectActiveFrame(FrameDimension.Page, fromPageIndex)
                //pages = New Bitmap(Me._img)

                // Save the first page (frame).
                SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.MultiFrame);
                CompressionEncodeParam = new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionCCITT4);
                EncoderParams.Param[0] = CompressionEncodeParam;
                EncoderParams.Param[1] = SaveEncodeParam;

                origionalFile = ConvertToBitonal((Bitmap)origionalFile);

                origionalFile.Save(location, codecInfo, EncoderParams);


                for (int i = 0; i < bmp.Length; i++)
                {
                    SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.FrameDimensionPage);
                    CompressionEncodeParam = new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionCCITT4);
                    EncoderParams.Param[0] = CompressionEncodeParam;
                    EncoderParams.Param[1] = SaveEncodeParam;
                    origionalFile.SaveAdd(bmp[i], EncoderParams);

                }

                SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.Flush);
                EncoderParams.Param[0] = SaveEncodeParam;
                origionalFile.SaveAdd(EncoderParams);
            }
            catch (System.Exception ee)
            {
                throw ee;
            }
        }

        private void saveImageExistingMultiplePage(Image[] bmp, Image origionalFile, string type, int PageNumber, string location)
        {

            try
            {
                //Now load the Codecs
                ImageCodecInfo codecInfo = getCodecForstring(type);

                Encoder saveEncoder;
                Encoder compressionEncoder;
                EncoderParameter SaveEncodeParam;
                EncoderParameter CompressionEncodeParam;
                EncoderParameters EncoderParams = new EncoderParameters(2);
                Bitmap pages;
                Bitmap NextPage;


                saveEncoder = Encoder.SaveFlag;
                compressionEncoder = Encoder.Compression;

                origionalFile.SelectActiveFrame(FrameDimension.Page, 0);
                pages = new Bitmap(origionalFile);
                pages = ConvertToBitonal(pages);

                // Save the first page (frame).
                SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.MultiFrame);
                CompressionEncodeParam = new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionCCITT4);
                EncoderParams.Param[0] = CompressionEncodeParam;
                EncoderParams.Param[1] = SaveEncodeParam;

                pages.Save(location, codecInfo, EncoderParams);


                for (int i = 1; i < PageNumber; i++)
                {
                    SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.FrameDimensionPage);
                    CompressionEncodeParam = new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionCCITT4);
                    EncoderParams.Param[0] = CompressionEncodeParam;
                    EncoderParams.Param[1] = SaveEncodeParam;

                    origionalFile.SelectActiveFrame(FrameDimension.Page, i);
                    NextPage = new Bitmap(origionalFile);
                    NextPage = ConvertToBitonal(NextPage);
                    pages.SaveAdd(NextPage, EncoderParams);

                }

                for (int i = 0; i < bmp.Length; i++)
                {
                    SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.FrameDimensionPage);
                    CompressionEncodeParam = new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionCCITT4);
                    EncoderParams.Param[0] = CompressionEncodeParam;
                    EncoderParams.Param[1] = SaveEncodeParam;
                    bmp[i] = (Bitmap)ConvertToBitonal((Bitmap)bmp[i]);
                    pages.SaveAdd(bmp[i], EncoderParams);

                }

                SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.Flush);
                EncoderParams.Param[0] = SaveEncodeParam;
                pages.SaveAdd(EncoderParams);
            }
            catch (System.Exception ee)
            {
                throw ee;
            }
        }


        private int getPageNumber(Image img)
        {

            Guid objGuid = img.FrameDimensionsList[0];
            FrameDimension objDimension = new FrameDimension(objGuid);

            //Gets the total number of frames in the .tiff file
            int PageNumber = img.GetFrameCount(objDimension);

            return PageNumber;
        }
        public Bitmap ConvertToBitonal(Bitmap original)
        {
            Bitmap source = null;

            // If original bitmap is not already in 32 BPP, ARGB format, then convert
            if (original.PixelFormat != PixelFormat.Format32bppArgb)
            {
                source = new Bitmap(original.Width, original.Height, PixelFormat.Format32bppArgb);
                source.SetResolution(original.HorizontalResolution, original.VerticalResolution);
                using (Graphics g = Graphics.FromImage(source))
                {
                    g.DrawImageUnscaled(original, 0, 0);
                }
            }
            else
            {
                source = original;
            }

            // Lock source bitmap in memory
            BitmapData sourceData = source.LockBits(new Rectangle(0, 0, source.Width, source.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);

            // Copy image data to binary array
            int imageSize = sourceData.Stride * sourceData.Height;
            byte[] sourceBuffer = new byte[imageSize];
            Marshal.Copy(sourceData.Scan0, sourceBuffer, 0, imageSize);

            // Unlock source bitmap
            source.UnlockBits(sourceData);

            // Create destination bitmap
            Bitmap destination = new Bitmap(source.Width, source.Height, PixelFormat.Format1bppIndexed);

            // Lock destination bitmap in memory
            BitmapData destinationData = destination.LockBits(new Rectangle(0, 0, destination.Width, destination.Height), ImageLockMode.WriteOnly, PixelFormat.Format1bppIndexed);

            // Create destination buffer
            imageSize = destinationData.Stride * destinationData.Height;
            byte[] destinationBuffer = new byte[imageSize];

            int sourceIndex = 0;
            int destinationIndex = 0;
            int pixelTotal = 0;
            byte destinationValue = 0;
            int pixelValue = 128;
            int height = source.Height;
            int width = source.Width;
            int threshold = 500;

            // Iterate lines
            for (int y = 0; y < height; y++)
            {
                sourceIndex = y * sourceData.Stride;
                destinationIndex = y * destinationData.Stride;
                destinationValue = 0;
                pixelValue = 128;

                // Iterate pixels
                for (int x = 0; x < width; x++)
                {
                    // Compute pixel brightness (i.e. total of Red, Green, and Blue values)
                    pixelTotal = sourceBuffer[sourceIndex + 1] + sourceBuffer[sourceIndex + 2] + sourceBuffer[sourceIndex + 3];
                    if (pixelTotal > threshold)
                    {
                        destinationValue += (byte)pixelValue;
                    }
                    if (pixelValue == 1)
                    {
                        destinationBuffer[destinationIndex] = destinationValue;
                        destinationIndex++;
                        destinationValue = 0;
                        pixelValue = 128;
                    }
                    else
                    {
                        pixelValue >>= 1;
                    }
                    sourceIndex += 4;
                }
                if (pixelValue != 128)
                {
                    destinationBuffer[destinationIndex] = destinationValue;
                }
            }

            // Copy binary image data to destination bitmap
            Marshal.Copy(destinationBuffer, 0, destinationData.Scan0, imageSize);

            // Unlock destination bitmap
            destination.UnlockBits(destinationData);

            // Return
            return destination;
        }
        


    }
}


Jeová Oliveira do Santos
whatz 65 9948-6787
skype: jeovacnp2012 e jeovacnp2007

jeovacnp2007
Participa Pouco
Participa Pouco


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum