none
Trabalhando com imagem em base64 RRS feed

  • Pergunta

  • Boa tarde!

    Tenho a seguinte situação:

    01 - Criei um campo do tipo VARBINARY(MAX)

    02 - Converti uma imagem em base64

    03 - Pguei esta imagem já convertida em base64 para e inseri ela no campo transformando a informação para VARBINARY utilizando  CONVERT(VARBINARY(MAX), @string) 

    04 - Preciso abrir novamente esta imagem, para isso, capturo a informação que está gravada e faço a conversão para VARCHAR(MAX) utilizando  CONVERT(VARCHAR(MAX), @string) no entanto o conteúdo da imagem fica pela metade ou seja o meu conteúdo vai além do tamanho máximo disponível no tipo VARCHAR(MAX) 

    COMO FAÇO PARA CAPTURAR TODA A INFORMAÇÃO sendo que preciso ela integralmente para converter de base64 para jpg

    Alguma dica?

    sexta-feira, 25 de novembro de 2016 19:38

Respostas

  • Nao converta em base64:

    Aqui esta uma rotina mais ou menos generica que eu uso:

     public byte[] ImgtoBytes(string path)
            {
                byte[] arraybytes = null;
    
                FileInfo img = new FileInfo(path);
                long numeroBytes = img.Length;
    
                FileStream fStream = new FileStream(caminhoImagem, FileMode.Open,FileAccess.Read);
    
                BinaryReader br = new BinaryReader(fStream);
    
                arraybytes = br.ReadBytes((int)numeroBytes);
    
                return arraybytes;
            }
     void SalvarImagem(string path)
            {
                byte[] dadosDaImagem = ImgtoBytes(path);
                SqlConnection con = new SqlConnection("Server=" + "Nome Servidor" + "; Database="Nome da Base de dados"; User ID=Cliente; Password=cliente; Trusted_Connection=False;");
          
                string query = "INSERT INTO Tabela(Imagem) VALUES(@Imagem)";
                SqlCommand cmd = new SqlCommand(query, con);
                cmd.Parameters.Add(new SqlParameter("@Imagem", (object)dadosDaImagem));
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
                                
            }

    aqui um artigo completo:

    http://www.macoratti.net/12/08/c_arisql.htm

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    sexta-feira, 25 de novembro de 2016 19:47

Todas as Respostas

  • Olá Rafael,

    Qual a sua necessidade de gravar no banco em VARBINARY e não em VARCHAR (Já com o conteúdo em base64)?


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    sexta-feira, 25 de novembro de 2016 19:42
  • Nao converta em base64:

    Aqui esta uma rotina mais ou menos generica que eu uso:

     public byte[] ImgtoBytes(string path)
            {
                byte[] arraybytes = null;
    
                FileInfo img = new FileInfo(path);
                long numeroBytes = img.Length;
    
                FileStream fStream = new FileStream(caminhoImagem, FileMode.Open,FileAccess.Read);
    
                BinaryReader br = new BinaryReader(fStream);
    
                arraybytes = br.ReadBytes((int)numeroBytes);
    
                return arraybytes;
            }
     void SalvarImagem(string path)
            {
                byte[] dadosDaImagem = ImgtoBytes(path);
                SqlConnection con = new SqlConnection("Server=" + "Nome Servidor" + "; Database="Nome da Base de dados"; User ID=Cliente; Password=cliente; Trusted_Connection=False;");
          
                string query = "INSERT INTO Tabela(Imagem) VALUES(@Imagem)";
                SqlCommand cmd = new SqlCommand(query, con);
                cmd.Parameters.Add(new SqlParameter("@Imagem", (object)dadosDaImagem));
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
                                
            }

    aqui um artigo completo:

    http://www.macoratti.net/12/08/c_arisql.htm

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    sexta-feira, 25 de novembro de 2016 19:47
  • Valeu William muito obrigado pela dica! Problema resolvido!
    sábado, 26 de novembro de 2016 12:20
  • André muito obrigado pela dica! Problema resolvido!
    sábado, 26 de novembro de 2016 12:20