Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
13 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 13 Visitantes :: 1 Motor de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
ListBox

23/5/2017, 10:37 por Rosangela Pires

Ola Amigos.

Para se movimentar na grid com as setas colocamos no Metodo AfterChange da grid …

Comentários: 0

TRY BEGIN E FLOCK()

17/4/2017, 10:32 por AJC

Pessoal estou tendo alguns problemas de gravação em rede, estou usando
try begin, mas vi algo na …

Comentários: 0

Exportar Dados Campo Memo Tabela DBF

10/4/2017, 10:28 por fcampos

Olá bom dia.

Estou tentando exportar os dados de algumas tabelas em formato dbf pelo foxpro.
O …

Comentários: 2

Função EVL()

8/4/2017, 12:18 por Clebervfp

Bom dia a todos.
Vim compartilhar de uma Função do próprio VFP que me benefício muito.
Função …

Comentários: 0

COMO BLOQUEAR REGISTRO OU TABELA NO VISUAL FOXPRO PARA GRAVAÇÃO EM REDE

3/4/2017, 10:29 por AJC

Pessoal estou tendo um problema que acontece sempre busco na minha tabela de clientes o ultimo …

Comentários: 2

Estatísticas
Temos 7081 usuários registrados
O último usuário registrado atende pelo nome de DENISON SANTOS DA SILVA

Os nossos membros postaram um total de 49 mensagens em 26 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