Jump to content

procurar e gravar imagens


Blackvelvet
 Share

Recommended Posts

Boas.

Na aplicação que estou a fazer, necessito de colocar uma fotos para ficarem registadas. O problema é que essas fotos,mais tarde vão ser precisas para serem visionadas futuramente.

Duvida nº 1: Como coloco as fotos na bd?

Duvida nº 2: Como faço para depois visionar as fotos?

Tenho codigo para buscar as fotos,mas o resto não consigo fazer.

codigo para fazer a busca das fotos.

  Private Sub btnFotoSeloOffice_Click(sender As System.Object, e As System.EventArgs) Handles btnFotoSeloOffice.Click
        dlgFicheiro.Title = "Seleccionar Ficheiro"
        dlgFicheiro.InitialDirectory = CurDir()
        dlgFicheiro.Filter = "Ficheiros de imagem|*.jpg"

        If dlgFicheiro.ShowDialog = Windows.Forms.DialogResult.OK Then
            pbxSeloOffice.Image = New Bitmap(dlgFicheiro.FileName)
        End If
    End Sub

Agradeço a vossa ajuda.

Um abraço

EDIT: GeSHi adicionado

Link to comment
Share on other sites

Tens que converter a imagem para binary data assim:

  
                Dim img = New MemoryStream()
                picturebox.Image.Save(img, System.Drawing.Imaging.ImageFormat.Jpeg)
                Dim pic As Byte() = img.ToArray
Link to comment
Share on other sites

  ' Cria um novo FileStream para leitura da imagem
        Dim fs As New IO.FileStream("C:\fotos", IO.FileMode.Open, IO.FileAccess.Read)

Dá-me erro nesta linha. Eu tenho a pasta criada e o erro que dá é que o acesso é negado.

Como se pode dar a volta á situação?

Link to comment
Share on other sites

Vou mostrar o codigo que tenho, pode ser que esteja (tambem) a fazer alguma coisa de errado.

Para buscar as fotos tenho este codigo:

Imports System.IO
Public Class fotos
    Inherits System.Windows.Forms.Form
    Private Sub btnFotoSeloWindows_Click(sender As System.Object, e As System.EventArgs) Handles btnFotoSeloWindows.Click
      dlgFicheiro.Title = "Seleccionar Ficheiro"
        dlgFicheiro.InitialDirectory = CurDir()
        dlgFicheiro.Filter = "Ficheiros de imagem|*.jpg"

        If dlgFicheiro.ShowDialog = Windows.Forms.DialogResult.OK Then
            pbxSeloWindows.Image = New Bitmap(dlgFicheiro.FileName)
        End If
    End Sub

    Private Sub btnFotoSeloOffice_Click(sender As System.Object, e As System.EventArgs) Handles btnFotoSeloOffice.Click
        dlgFicheiro.Title = "Seleccionar Ficheiro"
        dlgFicheiro.InitialDirectory = CurDir()
        dlgFicheiro.Filter = "Ficheiros de imagem|*.jpg"

        If dlgFicheiro.ShowDialog = Windows.Forms.DialogResult.OK Then
            pbxSeloOffice.Image = New Bitmap(dlgFicheiro.FileName)
        End If
    End Sub

No evento do botão tenho, para inserir a imagem:

 Private Sub btnok_Click(sender As System.Object, e As System.EventArgs) Handles btnok.Click
        ' Define a Connection String
        Dim myConnectionString As String = _
        "Data Source=.\SQLEXPRESS; Initial Catalog=GestInformatica; Integrated Security=SSPI;"
        ' Try

        ' Cria um novo FileStream para leitura da imagem
        Dim fs As New IO.FileStream("C:\Users\Pedro\Documents\ESTAGIO\Parque_Info\Parque_Info\bin\Debug\fotos", IO.FileMode.Open, IO.FileAccess.Read) ' erro "Access to the path ... is denied."

        ' Cria um array de Bytes do tamanho do FileStream 
        Dim ImageData(fs.Length() - 1) As Byte

        ' Lê os bytes do FileStream para o array criado
        fs.Read(ImageData, 0, ImageData.Length)

        ' Fecha o FileStream ficando a imagem guardada no array
        fs.Close()


        Using connection As New SqlClient.SqlConnection(myConnectionString)

            ' Define o commando Transact-SQL para inserir dados
            Dim SQL As String = "INSERT INTO gestao ([fotoffice],[fotowin]) VALUES (@fotoffice,@fotowin);"
            Dim command As New SqlClient.SqlCommand(SQL, connection)


            ' Define os parametros para a inserção de dados, onde está o array 
            ' de bytes(imagem) a ser inserida. O tipo do campo é Image
            command.Parameters.Add("@fotoffice", SqlDbType.Image).Value = ImageData
            command.Parameters.Add("@fotowin", SqlDbType.Image).Value = ImageData

            connection.Open()

            ' Insere os campos no SQL
            command.ExecuteNonQuery()

        End Using
        MsgBox(" Registo inserido com sucesso ", MsgBoxStyle.Information)
        'Catch ex As Exception
        MessageBox.Show("A operação efectuada não retomou qualquer resultado.")
        ' End Try
        Me.Close()
        registo.Show()
    End Sub

EDIT: GeSHi adicionado

Link to comment
Share on other sites

Boas a todos

Depois de passar o fim de semana a marrar no meu problema, a verdade é que ainda, não consegui solucionar o problema.

Ja tentei de varias maneiras,mas so uma é que funciona, e logo aquela que não me dá jeito que é, so grava uma foto em vez das 2 e so grava na raiz e não na pasta por mim definida no codigo.

Alguem me pode dar uma ajudinha????

Cumprimentos

Link to comment
Share on other sites

Não estive a ler os posts todos, só os teus dois últimos, portanto, nesta linha:

    Dim fs As New IO.FileStream("C:\Users\Pedro\Documents\ESTAGIO\Parque_Info\Parque_Info\bin\Debug\fotos", IO.FileMode.Open, IO.FileAccess.Read) ' erro "Access to the path ... is denied."

É normal que te dê erro. Afinal tu estás a dizer-lhe qual é a pasta, não lhe estás a dizer qual é o objecto, que neste caso seria uma imagem, portanto seria antes:

C:\Users\Pedro\Documents\ESTAGIO\Parque_Info\Parque_Info\bin\Debug\fotos\img.jpg

Contudo, presumindo que a pasta para onde direccionas a procura é a pasta da tua aplicação, utiliza antes o seguinte:

Dim fs As New IO.FileStream(Application.StartupPath & "\img.jpg", IO.FileMode.Open, IO.FileAccess.Read)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.