Fotos en base de datos access

Podrían por favor ayudarme, con una tabla de fotos, necesito que la bd no quede pesada y que cada registro aprox de 3000 fotos tenga su foto correspondiente.

2 respuestas

Respuesta
1
Lo único que tienes que hacer es crear en la tabla un campo que contiene la ruta de las imágenes almacenadas en una carpeta externa (p. ej. un pendrive, es lo que utilizo yo).
Ahí va el código que hace posible que la imagen se vea en el formulario mediante la ruta almacenada en un campo:
1º Te creas un módulo Módulo1 con el siguiente código:
Option Compare Database
Option Explicit
Public Function DisplayImage(ctlImageControl As Control, strImagePath As Variant) As String  
On Error GoTo Err_DisplayImage  
Dim strResult As String  
Dim strDatabasePath As String  
Dim intSlashLocation As Integer  
With ctlImageControl  
If IsNull(strImagePath) Then  
.Visible = False  
strResult = "No image name specified."  
Else  
If InStr(1, strImagePath, "\") = 0 Then  
' Path is relative  
strDatabasePath = CurrentProject.FullName  
intSlashLocation = InStrRev(strDatabasePath, "\", Len(strDatabasePath))  
strDatabasePath = Left(strDatabasePath, intSlashLocation)  
strImagePath = strDatabasePath & strImagePath  
End If  
.Visible = True  
.Picture = strImagePath  
strResult = "Image found and displayed."  
End If  
End With  
Exit_DisplayImage:  
DisplayImage = strResult  
Exit Function  
Err_DisplayImage:  
Select Case Err.Number  
Case 2220 ' Can't find the picture.  
ctlImageControl.Visible = False  
strResult = "Can't find image in the specified name."  
Resume Exit_DisplayImage:  
Case Else ' Some other error.  
MsgBox Err.Number & " " & Err.Description  
strResult = "An error occurred displaying image."  
Resume Exit_DisplayImage:  
End Select  
End Function  
2ºCreas un formulario y le agregas lo siguiente:
                1º Cuadro de Texto (no tiene origen de datos, es independiente) con el nombre: txtImageNote
                2º Control Marco Imagen con el nombre: IMAGEN
                3º Un cuadro de texto (cuyo origen de datos será el correspondiente al campo que contiene todas las rutas almacenadas en una tabla) que contiene la ruta de la imagen con el nombre: CLIP
3º En el evento On Current (no sé cómo es en español) del formulario que has creado, el siguiente código:
Option Compare Database
Option Explicit
Private Sub Form_AfterUpdate()  
CallDisplayImage  
End Sub  
Private Sub Form_Current()  
CallDisplayImage  
End Sub  
Private Sub txtImageName_AfterUpdate()  
CallDisplayImage  
End Sub  
Private Sub CallDisplayImage()  
Me!txtImageNote = DisplayImage(Me!IMAGEN, Me!CLIP)  
End Sub  
*Los nombres de los tres objetos del formulario los puedes cambiar por los que tú quieras, siempre y cuando también lo hagas en el código; yo les he puesto esos nombres porque son los que utilizo para mi base de datos.  
*Para pegar la ruta de la imagen en el campo te aconsejo el programa ACDSEE: simplemente haciendo Ctrl+c para copiar la imagen y Ctrl+v en el campo, la ruta se pega directamente sin necesidad de teclearla manualmente.
Respuesta

Si lo que deseas en guardar una imagen en la base de datos y que queden de cierto tamaño puedes utilizar la librería drawin y de esa manera las dejas del mismo tañaño para que no te ocupen mucho espacio en la base de datos

Imports System.IOImports System.ReflectionImports System.DrawingImports System.Drawing.Drawing2DImports System.Drawing.Text--Creas imagen en BlancoDim pg As Bitmap = New Bitmap(CType((8.5 * 72),(Integer)(11 * 72), Integer))Dim gr As Graphics = Graphics.FromImage(pg)--Creas el rectangulo que va a contenerDim pgRect As Rectangle = New Rectangle(0,0,pg.Width,pg.Height)Dim solidWhite As SolidBrush = New SolidBrush(Color.White)gr.FillRectangle(solidWhite, pgRect)--Obtienes la imagen y sus datosDim stm As Stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Examples.pic1.jpg")Dim img As Image = Image.FromStream(stm)Dim w As Integer = img.Width * 2Dim h As Integer = img.Height * 2--redibujas la imagenDim rc As Rectangle = New Rectangle((pg.Width),(pg.Height) ,w,h)Gr.DrawImage(img, rc)img.Dispose()stm.Close()--Guardas en una ruta o almacenas en la base de datospg.Save("../../abcpdf.drawing.gif", System.Drawing.Imaging.ImageFormat.Gif)

te dejo un ejemplo de internet que encontré si no lo solucionas para mañana en la maquina de la casa tengo un ejemplo desde el inicio hasta el final de crear imágenes desde una original hasta almacenarlas en la base de datos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas