none
Buenas Noche Imagenes scaniadas muy pesadas y guardadas en sql desde visual studio

    Pregunta

  • Alguien que me ayude tengo como 400 imágenes sacadas desde un scaner que de ancho tiene 3467 pinceles y alto 2490 cada una pesa entre 3 a 4 mb tengo que guardarlas en sql pero son muy pesadas hay como reducirlas antes de guardarlas. ejemplo 1300x 700 piceles

    nota: las imágenes son guardadas en sql no la ruta

    este es el código del botón guardar

    If Me.ValidateChildren = True And TxtNumeroWrs.Text <> "" And TxtNombreWrs.Text <> "" Then
                Try
                    Dim dts As New Vlaminas
                    Dim func As New Flaminas

                    dts.gNumero = TxtNumeroWrs.Text
                    dts.gNombre = TxtNombreWrs.Text
                    dts.gDescripcion = TxtDesccripcionWrs.Text

                    Dim ms As New IO.MemoryStream()

                    If Not PtbImagenWrs.Image Is Nothing Then
                        PtbImagenWrs.Image.Save(ms, PtbImagenWrs.Image.RawFormat)
                    Else
                        PtbImagenWrs.Image = My.Resources.file
                        PtbImagenWrs.Image.Save(ms, PtbImagenWrs.Image.RawFormat)
                    End If
                    dts.gImagen = ms.GetBuffer


                    If func.insertar(dts) Then
                        MessageBox.Show("Lamina registrado correctamente", "Guardando registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        mostrar()
                        limpiar()
                        TxtNombreWrs.Enabled = False
                        TxtNumeroWrs.Enabled = False
                        TxtDesccripcionWrs.Enabled = False
                        BtnNuevoWrs.Enabled = True
                        BtnCargarWrs.Enabled = False
                        BtnLimpiarWrs.Enabled = False

                    Else
                        MessageBox.Show("Producto no fue registrado intente de nuevo", "Guardando registros", MessageBoxButtons.OK, MessageBoxIcon.Error)
                        mostrar()
                        limpiar()
                    End If

                Catch ex As Exception
                    MsgBox("Escoja la categoria del producto")

                End Try
            Else
                MessageBox.Show("Falta ingresar algunos datos", "Guardando registros", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        End Sub

    miércoles, 12 de octubre de 2016 1:59

Respuestas

  • no entiendo mucho c# je je je 
    Haz una búsqueda en Internet usando las palabras "Translate C# to VB". Verás que salen muchos traductores automáticos. El código del ejemplo que te enlacé es lo bastante simple como para que el traductor automático te lo convierta por completo a VB.
    • Marcado como respuesta Willian61x domingo, 16 de octubre de 2016 20:50
    jueves, 13 de octubre de 2016 5:55

Todas las respuestas

  • 3 o 4 MB no son muy pesadas para SQL Server; otra cosa sería que hablásemos de uno o dos gigabytes por imagen, pero con el tamaño que tienes, y con solo 400 imágenes, se las tragará sin inmutarse.

    Pero de todas formas, si las quieres reducir, puedes hacerlo en .NET de varias maneras. Por ejemplo, en este artículo de CodeProject puedes ver una manera:

    http://www.codeproject.com/Questions/245867/reduce-size-of-image-csharp

    Aunque ese código la salva a disco, el método Save también acepta que le pases un Stream. Puedes pasarle un MemoryStream y luego los bytes del MemoryStream salvarlos en la base de datos.

    miércoles, 12 de octubre de 2016 7:02
  • el problema es al mirarlas en visual estudio la memoria ram trabaja demacido sube asta 3.5 gb de uso de memoria y el proyecto a la hora de reproducirlo solo con 15 imagenes se vuelve lento 
    miércoles, 12 de octubre de 2016 7:21
  • Bien, pues entonces es mejor que les cambies el tamaño a las imágenes, ya que parece más bien una limitación del código cliente y no de SQL Server.

    La técnica básica para ello consiste en crear un objeto de tipo Bitmap con las dimensiones deseadas, después se obtiene un objeto Graphics a partir del bitmap, y luego se hace sobre ese Graphics un DrawImage que pinte encima la imagen "grande" pero con un tamaño más pequeño (el tamaño deseado se puede indicar en los parámetros del DrawImage). Después se hace un Save del bitmap en el formato deseado, por ejemplo jpeg, y ya tienes tu imagen "achicada".

    Puedes inspirarte en el ejemplo que hay en este artículo de CodeProject:

    http://www.codeproject.com/Tips/552141/Csharp-Image-Resize-convert-and-save

    miércoles, 12 de octubre de 2016 17:39
  • Gracias amigo voy a tratar de acomodarlo a mi codigo y a ver como traducirlo a visual estudio no entiendo mucho c# je je je 
    jueves, 13 de octubre de 2016 3:38
  • no entiendo mucho c# je je je 
    Haz una búsqueda en Internet usando las palabras "Translate C# to VB". Verás que salen muchos traductores automáticos. El código del ejemplo que te enlacé es lo bastante simple como para que el traductor automático te lo convierta por completo a VB.
    • Marcado como respuesta Willian61x domingo, 16 de octubre de 2016 20:50
    jueves, 13 de octubre de 2016 5:55