https://foro.gambas-es.org/viewtopic.php?f=1&t=114
-----------------------------------
CanihoJR
Viernes, 09 Octobre 2009, 15:28

Como Puedo Guardar Una Imagen De Un Articulo?
-----------------------------------
Bueno, todos estaremos deacuerdo que muchas veces lo mas dificil es "tener la idea" que normalmente es mas facil que te digan, hazme un programa que le pases 2 numeros y te devuelva la ecuacion astrotopica de ambos y enseñame el resultado, o cosas por el estilo,...

El caso es que como muchos sabeis estoy desarrollando una aplicacion para la gestion de mi comercio, y ando liado con la inserccion de articulos.  Este es mi formulario de ingreso de articulos:

[img align=left]http://img34.imageshack.us/img34/4320/pantallazonuevoarticulo.png[/img]

Despues de un par de posts con vosotros, conseguimos arreglar lo del picturebox para que cojiese la imagen con el dialogo... Ahora estoy atascado con guardar estos datos. Por un lado porque estoy tratando de hacerlo desde el codigo gambas, para evitar enlazar mi codigo a un motor de base de datos concreto, como recomendais por algun que otro post.

El caso esque como solucion se me ocurrió guardar un String con la ruta donde está la imagen, cargar la imagen, y guardarla en el Settings.Path.

Bueno, el caso es que funcionar funciona, pero como siempre, busco o una segunda opinion, o alguna otra idea por parte de vosotros que contais con mas experiencia que yo en programacion o algun camino alternativo ;), barajé tambien la posibilidad de guardar la imagen en la base de datos,pero creo que esto cargaria demasiado la base de datos inecesariamente... alguna alternativa?

Gracias!

PD: copio el codigo actual, por si quereis comentar cualquier tema :)
[code linenumbers=true syntax=gambas]PUBLIC SUB Form_Open()
  ME.Center
END

PUBLIC SUB Button1_Click()
  'creo variable
  DIM RutaImagen AS String

  'doy propiedades a la ventana:
  Dialog.Title = "Selecciona una imagen."
  Dialog.Filter = ["*.png;*.jpg;*.jpeg;*.bmp", "Imagenes", "*.*", "Todos los ficheros"] 
  Dialog.Path = User.Home
  'propiedad Stretch del picture box en true para ajustar la imagen al cuadrao.
  IF Dialog.openfile() THEN RETURN 
  'cojo el archivo seleccionado y lo pongo en el picturebox
  RutaImagen = Dialog.Path
  PBimagen.Picture = Picture[RutaImagen]

END


PUBLIC SUB Button3_Click()
  'creo variables
  DIM resultado AS Result
  DIM imgtemporal AS Picture

  'me conecto a la base de datos
  MConexion.Connect()

  'copio la imagen en la carpeta del programa dentro de ~/.config/gambas/LNAGestion
  imgtemporal = PBimagen.Picture
  imgtemporal.Save(Settings.Path & "/nose.png")
END[/code]

Ahhh, me olvidaba, tampoco sé como generar un nombre aleatorio de la imagen :( siempre las guardo como nose.png una encima de otra..... :/


-----------------------------------
nrcefe
Viernes, 09 Octobre 2009, 15:59

Re: Como Puedo Guardar Una Imagen De Un Articulo?
-----------------------------------
Respecto al tema de que guardas la imagen con el mismo nombre, lo que podrias hacer es guardar las imagenes con el nombre que quieras, por ejemplo "none", pero agreagándole un valor numérico incremental. Ej

imagen 1 : none1.png
imagen 2 : none2.png
y asi sucesivamente.

Para ello  creas un campo numérico ( en la tabla donde almacenas la dirección de la imagen) y guardas el ultimo numero asignado a la imagen; y para grabar una imagen, recurris a este campo, obtenes el valor que hay en el campo y se lo asignas a la imagen (incrementado en 1 (+1)).

A medida que vas grabando imagenes, vas actualizando el valor del campo


un abrazo


-----------------------------------
maikl
Martes, 27 Octobre 2009, 14:52

Re: Como Puedo Guardar Una Imagen De Un Articulo?
-----------------------------------
Lo que hago yo al asignar una imagen a un artículo es hacer una copia de la imagen en una subcarpeta del programa (redimensionandola si es muy grande) y el nombre es el código del artículo o si quieres el código de barras.
Creo que es la mejor opción ya que no hace falta guardar nada en la ficha del artículo para enlazar con una imagen, de un vistazo ves los artículos que tienen foto y sabes ir del artículo a la foto y de la foto al artículo sin dificultad.
Puedes buscar muy facilmente artículos que no tengan foto e igualmente fotos que no estan asignadas a ningun artículo simplemente buscando artículos con código igual al nombre de la foto.
Además al tener una copia de la imagen se puede borrar/perder/loquesea la imagen original que no afectará al programa.
Es una idea.
Saludos
Maikl


-----------------------------------
david
Jueves, 29 Octobre 2009, 01:51

Re: Como Puedo Guardar Una Imagen De Un Articulo?
-----------------------------------
y puedes meter el codigo de barras con el escaner portatil?, que bueno

mira aqui y si lo quieres actualizado me mandas un correo

http://foro.gambas-es.org/viewtopic.php?f=3&t=436&highlight=guardar+archivos+pdf


-----------------------------------
soplo
Jueves, 29 Octobre 2009, 02:05

Re: Como Puedo Guardar Una Imagen De Un Articulo?
-----------------------------------
Pensé que te contestarían pero dado que no lo hacen pues tengo que decirte que mires el campo "blob" en mysql que se corresponde con el tipo de dato db.blob de gambas.

Sirve para insertar en un  campo valores binarios de gran tamaño. Pueden ser imágenes, documentos de texto, hojas de cálculo y cosas así.

Pero te aconsejo que no los uses. El camino correcto es guardar un string con el nombre del archivo y guardar este en una ubicación específica. Hacen que el peso de la tabla sea mucho mayor y a la larga relentizan todo el acceso a la tabla. No cuesta lo mismo hacer una select donde hay campos blob con contenido que donde no los hay o no tienen contenido.

 :mryellow:


-----------------------------------
emerling
Jueves, 29 Octobre 2009, 02:31

Re: Como Puedo Guardar Una Imagen De Un Articulo?
-----------------------------------
bueno, sobre lo de la imagen en mi caso y en otros lenguajes, yo guardaba la RUTA de la imagen con su nombre, logicamente todas la imagenes.
debe estar en una carpeta,  ysolo le indicba al control icture la ruta de la imagen, que estaba logicamente guardada en una base de datos, cuandose guarda la imagen como tal se hace pesadisimo la base de datos, si guardas laruta simplemente este muestra la imagen siempre y cuando no la eliminen o borren 
para los nombres, yo hacia un juego entre fecha y hora unia los dos datos en numeros y sas, cada archivo al momento de crearse, tenia la hora segun el dia y segundos incluso, puedes hacer tu propia mezcla, asi no tendras archivos duplicados, y no necesitas otra celda en la base de datos para agregar mas datos, simplemente hora fecha actual lo pasas a texto y sas, le colocas el nombre.


-----------------------------------
soplo
Jueves, 29 Octobre 2009, 03:20

Re: Como Puedo Guardar Una Imagen De Un Articulo?
-----------------------------------
Ya que canihojr pregunta por ideas sobre esta cuestión sugiero algunas:

Que los productos estén agrupados en familias. Esto es que haya una opción en la aplicacion para crear familias y luego cada artículo que pongo le indico a que familia pertenece.

Esto ayuda porque se pueden poner márgenes de beneficio por familias (creo recordar que él tiene una tienda de informática) así que podría poner un márgen para la familia de impresoras. Al poner un nuevo artículo el ordenador podría darle el precio sugerido de venta.

Eso permite además hacer grandes cuentas en el sentido de cuanto dinero se ha movido y ganado al vender impresoras, dvds, ordenadores, ..., etc. Se sabe mejor donde se hace negocio y donde hay que mejorar.

Servicio técnico
Uno de esos artículos debe ser el servicio técnico porque así se puede valorar cuanto  tiempo y cuanto dinero se ha ganado con ello. El servicio técnico es válido tambien para los casos en los que no se cobra porque se aplica la garantia por algún mal funcionamiento. Del cruce de ambos y las familias de productos que tienen garantía se sabe cuanto dinero ganamos vendiendo productos que tienen garantía y cuanto perdemos en servicio técnico del que no sacamos beneficio.

Otra cosa interesante es un campo de valor comercial que viene a ser el valor que le sacamos al producto. No se refiere a cuanto dinero ganamos, sino a lo bien o mal que quedamos al vender ese artículo.

Esto es que cada vez que compramos un artículo para la venta le asignamos el valor máximo (digamos 10) porque pensamos que vendemos un artículo en perfectas condiciones. Luego algunas veces surgen problemas y por cada problema reducimos ese valor de 10 a 5 y a 0. 

De cruzar ese valor con los proveedores obtenemos que proveedores nos venden productos buenos o malos y de que familias. Es una buena idea cuando se venden productos con una rotación muy alta.


