Exportando colunas Image e Binary no SQL Server para JPEG

Olá Caríssimos, tudo bem ?

Hoje vamos resolver uma questão que há dias incomodava: Como faço pra exportar para JPEG uma imagem gravada em uma coluna do tipo image / binary no SQL Server ?

Depois de procurar bastante achei aqui: http://michaelsync.net/2010/07/20/easy-sql-script-for-handling-sql-image-data

Primeiro é preciso habilitar OLE Automation Procedures no banco. Você precisará logar com um usuário com permissões administrativas.


sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

OK! Agora já podemos exportar a imagem executando o código a seguir:


DECLARE @pctStr INT
DECLARE @image VARBINARY(MAX)
--- aqui você substitui pela tabela e faz a query. Você também pode criar uma proc que exporte tudo
SET @image = (SELECT foto FROM TbFotos WHERE codfoto= 121)
DECLARE @filePath VARCHAR(8000)
SET @filePath = 'C:\\foto.jpg'
EXEC sp_OACreate 'ADODB.Stream', @pctStr OUTPUT
EXEC sp_OASetProperty @pctStr, 'Type', 1
EXEC sp_OAMethod @pctStr, 'Open'
EXEC sp_OAMethod @pctStr,  'Write', NULL, @image
EXEC sp_OAMethod @pctStr, 'SaveToFile', NULL,@filePath, 2
EXEC sp_OAMethod @pctStr, 'Close'
EXEC sp_OADestroy @pctStr

Lembrando que: o Path que você passa é do servidor de instalação do SQL e não da sua máquina…

É só isso.

Enjoy it !!!

abraço a todos!

Anúncios

, , , , , ,

  1. #1 por Anônimo em 18 de setembro de 2014 - 10:47 am

    .

  2. #2 por Eder Lelis em 18 de setembro de 2014 - 10:50 am

    Olá amigo, adorei este comando, é exatamente o que estou procurando. Porém tenho várias fotas para exportar, como farei pra exportar todas de uma fez, colocando cada foto com um nome em específico? Exemplo, no meu banco tenho a tabela com a matrícula do aluno e a foto, daí quero exportar todas as fotos para uma pasta e quero que cada uma seja baixada com o nome matricula ( a matrícula específica de cada aluno). Obrigado e aguardo retorno.

    • #3 por Anônimo em 18 de setembro de 2014 - 11:14 am

      Eder,
      Você vai precisar de um cursor pra fazer isso.
      Monte a query com a imagem e a matricula, execute em um cursor e faça o loop nos resultados.

      abs

  3. #4 por Eder Lelis em 17 de março de 2015 - 11:44 am

    Rapaz, to até hoje quebrando cabeça com isso. Nunca fiz um cursor, pode me ajudar? No sql teno duas colunas, matric (numero) e foto (binario), preciso exportar cada foto para uma pasta renomeando a foto com o numero da matrícula, ou seja, na pasta vai ficar todas as imagens com os nomes das respectivas matrículas, tipo, 10, 11, 50, 100, 1000. Tenho quase 1500 fotos. Obrigado pela atenção!

    • #5 por Eder Lelis em 17 de março de 2015 - 4:23 pm

      Consegui resolver aqui. Ufa. Obrigado pela dica. li a respeito de cursor e resolvi.

  4. #6 por Anônimo em 1 de dezembro de 2016 - 11:13 am

    Bom dia, rodo o comando no Master e não encontro nada na pasta
    alguém pode me ajudar?

  5. #7 por Anônimo em 4 de agosto de 2017 - 10:16 am

    Esta consulta pode ser util para banco de dados TOTVS ?

    • #8 por Rafael Swerts em 14 de agosto de 2017 - 9:49 am

      Sim, se estiver rodando no Labore vai funcionar, porém para exportar várias fotos da PFUNC tem que criar um cursor..

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: