saludos amigos, no entiendo porque algo tan sencillo lo hace a uno perder horas de leer foros y nada
- como hago visualizar en un dialogo una foto pero NO bmp sino JPG, he visto que solo cambiandole la extension a la instruccion se supone el freeimage la convierte automaticamente pero no muestra nada y me inhibi el dialogo, no me deja darle salir ni nada
@ 13,252 BITMAP OBMP FILENAME IF (FILE(DIREF+ALLTRIM(TCODIGO)+".JPG"),DIREF+ALLTRIM(TCODIGO)+".JPG",DIREF+"SINFOTO.JPG") SIZE 120,140 PIXEL OF DIALOGO ADJUST
originalmente con bmp todo sale perfecto pero en un directorio con 4000 fotos ya es cuestion de tamaño en disco, por eso se necesita jpg
1.- ¿se necesita declarar el freeimage.dll o incluir un ch, o no se?,
asi mismo si dejo que el usuario seleccione la foto con una ventanita de explorardor:
2.- ¿existe una manera de que yo pueda hacerce un resize a la imagen y guardarla a ese tamaño por ejemplo de 160x120 ya que ahora cualquier persona tiene una camarita de 10mp y son fotos de 4000x4000, osea que la foto quede ya de ese tamaño ojo no con el adjust al verla sino que quede guardada al tamaño deseado para liberar mas espacio aun?
gracias
alejandro
porque algo facil se convierte en una pesadilla...
porque algo facil se convierte en una pesadilla...
Software especializado para oficinas contables con grandes volumenes de Informacion
Impresion de todos los formularios del Seniat, Dian
alex_patino74@hotmail.com
whatsapp 57+3214777217
Impresion de todos los formularios del Seniat, Dian
alex_patino74@hotmail.com
whatsapp 57+3214777217
Re: porque algo facil se convierte en una pesadilla...
QAZWSX2K;
Para usar JPG necesitas usar la clase TImage No TBitmap.
Aquí ahora mismo no tengo los fuentes de las clases, pero mira la clase TImage que sino recuerdo mal, tienes un metodo saveImage() o algo así, y también había unas funciones para guardar el archivo en otros formatos y tamaño.
Un saludo
JLL
Para usar JPG necesitas usar la clase TImage No TBitmap.
Code: Select all
@ ::oDlg:nTop+25,0 IMAGE ::oImage FILENAME ::cFile NOBORDER;
SIZE ::oDlg:nWidth, ::oDlg:nHeight;
OF ::oDlg ADJUST PIXEL
Un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 3.1.1 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA + OURXDBU -
S.O: XP / Win 7
Blog: http://javierlloris.blogspot.com.es/
e-mail: jllorispersonal@gmail.com
Editor de Recursos: PellecC
ADA + OURXDBU -
S.O: XP / Win 7
Blog: http://javierlloris.blogspot.com.es/
e-mail: jllorispersonal@gmail.com
Re: porque algo facil se convierte en una pesadilla...
Este ejemplo me funciona a la perfeccion.... aqui hay una parte del codigo si lo necesitas completo con gusto te lo mando al mail
Espero sea lo que necesitas
Code: Select all
DEFINE DIALOG oCuaJug RESOURCE "orMedid9" ICON "#8001" //TRANSPARENT BRUSH oFondo
REDEFINE IMAGE oImg ID 4004 OF oCuaJug ADJUST SCROLL //FILE ( cFichero )
oImg:Progress( .f. )
REDEFINE BUTTONBMP Btn_Limp ID 4003 OF oCuaJug BITMAP "Blimpi2"
oBrw1 := TXBrowse():New( oCuaJug )
oBrw1:nMarqueeStyle := MARQSTYLE_HIGHLCELL //MARQSTYLE_HIGHLROW
oBrw1:nColDividerStyle := LINESTYLE_RAISED
oBrw1:nHeaderLines := 1
oBrw1:lColDividerComplete := .t.
oBrw1:lRecordSelector := .t.
oBrw1:bClrStd := {|| IF( (oRs1:AbsolutePosition()%2)==0,{CLR_BLACK,RGB(193,221,255)},{CLR_BLACK,RGB(221,245,255)} ) }
oBrw1:bChange := {|| prueba(oImg) }
aCol[ 1] := oBrw1:AddCol()
aCol[ 1]:bStrData := { || If( oRs1:Eof, Space( nWidth ), cValtoChar( oRs1:Fields( "cedula" ):Value ) ) }
aCol[ 1]:cHeader := "Cedula"
aCol[ 1]:nHeadStrAlign := AL_LEFT
aCol[ 1]:nDataStrAlign := AL_LEFT
aCol[ 1]:nWidth := 90
aCol[ 2] := oBrw1:AddCol()
aCol[ 2]:bStrData := { || If( oRs1:Eof, Space( nWidth ), cValtoChar( oRs1:Fields( "nombre" ):Value ) ) }
aCol[ 2]:cHeader := "Nombres"
aCol[ 2]:nHeadStrAlign := AL_LEFT
aCol[ 2]:nDataStrAlign := AL_LEFT
aCol[ 2]:nWidth := 150
aCol[ 3] := oBrw1:AddCol()
aCol[ 3]:bStrData := { || If( oRs1:Eof, Space( nWidth ), cValtoChar( oRs1:Fields( "apellidos" ):Value ) ) }
aCol[ 3]:cHeader := "Apellidos"
aCol[ 3]:nHeadStrAlign := AL_LEFT
aCol[ 3]:nDataStrAlign := AL_LEFT
aCol[ 3]:nWidth := 150
aCol[ 4] := oBrw1:AddCol()
aCol[ 4]:bStrData := { || If( oRs1:Eof, Space( nWidth ), cValtoChar( oRs1:Fields( "telefono" ):Value ) ) }
aCol[ 4]:cHeader := "Telefono"
aCol[ 4]:nHeadStrAlign := AL_LEFT
aCol[ 4]:nDataStrAlign := AL_LEFT
aCol[ 4]:nWidth := 81
aCol[ 5] := oBrw1:AddCol()
aCol[ 5]:bStrData := { || If( oRs1:Eof, Space( nWidth ), cValtoChar( oRs1:Fields( "email" ):Value ) ) }
aCol[ 5]:cHeader := "E-mail"
aCol[ 5]:nHeadStrAlign := AL_LEFT
aCol[ 5]:nDataStrAlign := AL_LEFT
aCol[ 5]:nWidth := 200
aCol[ 6] := oBrw1:AddCol()
aCol[ 6]:bStrData := { || If( oRs1:Eof, Space( nWidth ), cValtoChar( oRs1:Fields( "promocion" ):Value ) ) }
aCol[ 6]:cHeader := "Prom"
aCol[ 6]:nHeadStrAlign := AL_LEFT
aCol[ 6]:nDataStrAlign := AL_LEFT
aCol[ 6]:nWidth := 50
aCol[ 7] := oBrw1:AddCol()
aCol[ 7]:bStrData := { || If( oRs1:Eof, Space( nWidth ), cValtoChar( oRs1:Fields( "profesion" ):Value ) ) }
aCol[ 7]:cHeader := "Profesion"
aCol[ 7]:nHeadStrAlign := AL_LEFT
aCol[ 7]:nDataStrAlign := AL_LEFT
aCol[ 7]:nWidth := 190
aCol[ 8] := oBrw1:AddCol()
aCol[ 8]:bStrData := { || pRegBar05(cValtoChar( oRs1:Fields( "carnet" ):Value ) ) }
aCol[ 8]:cHeader := "Carnet No."
aCol[ 8]:nHeadStrAlign := AL_LEFT
aCol[ 8]:nDataStrAlign := AL_LEFT
aCol[ 8]:nWidth := 70
aCol[ 8]:nEditType := EDIT_GET
aCol[ 8]:bOnPostEdit := {|o, v| pRegBar06(v,oRs1:Fields( "cedula" ):Value,oBrw1,alias) }
oBrw1:SetADO( oRs1 )
oBrw1:CreateFromResource( 102 )
oCuaJug:cTitle := "Jugadores Inscritos"
ACTIVATE DIALOG oCuaJug On Init (oCuaJug:refresh(),BarraJug( oCuaJug,oBrw1 ),prueba(oImg)) CENTERED
*******************************************
*MOSTRAR LA FOTO Y SI NO EXISTE LO DESCARGA
*******************************************
function prueba(oImg)
local oInternet,oFTP
ncedula:=oRs1:Fields( "cedula" ):Value
rutalocal:=".\fotos\"+alltrim(ncedula)+".jpg"
rutaserve:="/public_html/fotos/"+alltrim(ncedula)+".jpg"
IF !FILE (rutalocal)
oInternet := TInternet():New()
oFTP := TFTP():New( "ftp.mipagina.com", oInternet, "usuario","Clave" )
Ftpgetfile( oFTP:hFTP,rutaserve,rutalocal )
oInternet:End()
IF !FILE (rutalocal)
oImg:LoadBmp( ".\fotos\noimagen.jpg" )
oImg:Refresh()
ELSE
oImg:LoadBmp( rutalocal )
oImg:Refresh()
ENDIF
ELSE
oImg:LoadBmp( rutalocal )
oImg:Refresh()
ENDIF
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
Re: porque algo facil se convierte en una pesadilla...
alejandro,
entiendo que si lo que buscas es cargar imagenes .jpg yo lo hago asi
REDEFINE IMAGE oImage ID 101 FILE ".\bitmaps\logo.jpg" OF oDlg ADJUST UPDATE
y la freeimage.dll debe estar donde esta tu .exe
me va bien
salu2
paco
entiendo que si lo que buscas es cargar imagenes .jpg yo lo hago asi
REDEFINE IMAGE oImage ID 101 FILE ".\bitmaps\logo.jpg" OF oDlg ADJUST UPDATE
y la freeimage.dll debe estar donde esta tu .exe
me va bien
salu2
paco
____________________
Paco
Paco
-
- Posts: 11
- Joined: Fri Nov 20, 2009 11:07 am
Re: porque algo facil se convierte en una pesadilla...
El 13 de octubre, no hace un mes, comenté en este foro el mismo problema, como puedes ver en este enlace
http://forums.fivetechsupport.com/viewt ... =6&t=22637
Después de darle muchas vueltas, y a la falta de contestación por parte de nadie seguimos investigando. La conclusión, como digo en el enlace anterior, es la siguiente:
1.- La clase TImagen, heredada de TBitMap, tiene una función distinta para los BMP que para los demás. Los BMP's utilizan una función de ¿Windows? y funciona perfectamente, pero cuando se da cuenta que tiene extensión NO BMP, no entra a la función y continua hacia freeimagen. ES LA LLAMADA A FREEIMAGEN la que no me funciona.
2.- La primera instrucción solicitada a la DLL es que nos de el tipo de fichero (independientemente de la extenxión), para JPG debe devolver 2 y devuelve NIL.
3.- Si a la siguiente instrucción le ponemos a mano el tipo 2, también devuelve NIL.
4.- Pensando que es la llamada a freeimagen, hago pruebas con enlaces FTP que también utiliza una DLL. Sorpresa TAMPOCO FUNCIONA.
5.- En la versión anterior la 7.x SI me funciona. En la versión 9.x NO FUNCIONA el enlace con las DLL's que tienen en la llamada "DLL32 etc". ¿ Que hay que hacer en el programa para que si funcione ?.
A ver si siendo varios, nos tienen en cuenta
Si encuentras la solución, por favor dimelo.
http://forums.fivetechsupport.com/viewt ... =6&t=22637
Después de darle muchas vueltas, y a la falta de contestación por parte de nadie seguimos investigando. La conclusión, como digo en el enlace anterior, es la siguiente:
1.- La clase TImagen, heredada de TBitMap, tiene una función distinta para los BMP que para los demás. Los BMP's utilizan una función de ¿Windows? y funciona perfectamente, pero cuando se da cuenta que tiene extensión NO BMP, no entra a la función y continua hacia freeimagen. ES LA LLAMADA A FREEIMAGEN la que no me funciona.
2.- La primera instrucción solicitada a la DLL es que nos de el tipo de fichero (independientemente de la extenxión), para JPG debe devolver 2 y devuelve NIL.
3.- Si a la siguiente instrucción le ponemos a mano el tipo 2, también devuelve NIL.
4.- Pensando que es la llamada a freeimagen, hago pruebas con enlaces FTP que también utiliza una DLL. Sorpresa TAMPOCO FUNCIONA.
5.- En la versión anterior la 7.x SI me funciona. En la versión 9.x NO FUNCIONA el enlace con las DLL's que tienen en la llamada "DLL32 etc". ¿ Que hay que hacer en el programa para que si funcione ?.
A ver si siendo varios, nos tienen en cuenta
Si encuentras la solución, por favor dimelo.
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: porque algo facil se convierte en una pesadilla...
Hola
he construido, con la version 9.10, sin problemas el ejemplo testimg.prg
te dejo el link de descarga donde se incluye el prg, exe y dll
podrias publicar un ejemplo que podamos construir para reproducir el error...
gracias
http://www.sitasoft.net/fivewin/samples/testimg.zip
imagen JPG
imagen PNG
imagen GIF
he construido, con la version 9.10, sin problemas el ejemplo testimg.prg
te dejo el link de descarga donde se incluye el prg, exe y dll
podrias publicar un ejemplo que podamos construir para reproducir el error...
gracias
http://www.sitasoft.net/fivewin/samples/testimg.zip
imagen JPG
imagen PNG
imagen GIF
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Re: porque algo facil se convierte en una pesadilla...
si amigos gracias, efectivamente aunque habia probado con timage en un momento no me sirvio, es con timagen y no con bitmap como dice JLL y los demas, ya funciona perfecto, el problema era que tenia un freeimage de la epoca de maria castañas (menos de 1 mega), pensaba era parte de fivewin, asi que actualize el freeimage y con timage todo perfecto
otra cosita leandro veo que usas oFTP := TFTP():New( "ftp.mipagina.com", oInternet, "usuario","Clave" ), como haces para que no te genere los archivos log que crea ftp (en donde si los ves pone la clave y todo, son archivos planos y son ftp.log,ftp1.log,ftp2.log y asi sucesivamente te llena el disco duro de esos log y cualquier mortal los puede ver)
gracias a todos
otra cosita leandro veo que usas oFTP := TFTP():New( "ftp.mipagina.com", oInternet, "usuario","Clave" ), como haces para que no te genere los archivos log que crea ftp (en donde si los ves pone la clave y todo, son archivos planos y son ftp.log,ftp1.log,ftp2.log y asi sucesivamente te llena el disco duro de esos log y cualquier mortal los puede ver)
gracias a todos
Software especializado para oficinas contables con grandes volumenes de Informacion
Impresion de todos los formularios del Seniat, Dian
alex_patino74@hotmail.com
whatsapp 57+3214777217
Impresion de todos los formularios del Seniat, Dian
alex_patino74@hotmail.com
whatsapp 57+3214777217
-
- Posts: 11
- Joined: Fri Nov 20, 2009 11:07 am
Re: porque algo facil se convierte en una pesadilla...
Siento tener que insister, perdonarme.
Daniel,
1.- El ejecutable que me mandas compilado funciona perfectamente, lo cual nos dice entre otras cosas que la dll es correcta.
2.- He probado compilando el fuente que me mandas, pero con mis ficheros de FW y xHarbour. Con freeimage.dll que me mandas SIGUE SIN FUNCIONAR.
Yo orientaria el problema al enlace dentro de TImage, que hace a la DLL. Te pongo la función y te indico donde me pasa que devuelve NIL en lugar de valores correctos. ¿No será el problema el enlace con la DLL? (La dll esta donde el ejecutable, naturalmente):
Si no lo necesitase, de verdad, no os molestaría.
Un saludo.
Daniel,
1.- El ejecutable que me mandas compilado funciona perfectamente, lo cual nos dice entre otras cosas que la dll es correcta.
2.- He probado compilando el fuente que me mandas, pero con mis ficheros de FW y xHarbour. Con freeimage.dll que me mandas SIGUE SIN FUNCIONAR.
Yo orientaria el problema al enlace dentro de TImage, que hace a la DLL. Te pongo la función y te indico donde me pasa que devuelve NIL en lugar de valores correctos. ¿No será el problema el enlace con la DLL? (La dll esta donde el ejecutable, naturalmente):
Code: Select all
function FILOADIMG( cFile, nFormat )
local hDib, hInfoH, hInfo, hBits, hWnd, hDC, hBmp
if Upper( cFileExt( cFile ) ) = "BMP"
return ReadBitmap( 0, cFile ) // si es BMP, funciona perfectamente
endif
if LoadFreeImage() > 32
////////////////////////////////////////////////////////////////////////////////////////////////
nFormat = FIGETFILETYPE( cFile, 0 ) // aqui me devuelve NIL
hDib = FILOAD( nFormat, cFile, 0 ) // si pongo nFormat=2, tambien me devuelve NIL
////////////////////////////////////////////////////////////////////////////////////////////////
hInfoH = FIGETINFOHEADER( hDib )
hInfo = FIGETINFO( hDib )
hBits = FIGETBITS( hDib )
hWnd = GETDESKTOPWINDOW()
#ifdef __CLIPPER__
hDC = GETDC32( hWnd )
#else
hDC = GETDC( hWnd )
#endif
hBmp = CreateDiBitmap( hDC, hInfoH, CBM_INIT, hBits, hInfo, DIB_RGB_COLORS )
ReleaseDC( hWnd, hDC )
FIUNLOAD( hDib )
endif
return hBmp
Un saludo.
Re: porque algo facil se convierte en una pesadilla...
QAZWSX2K;
1.- La facil y rapida, una vez finalice la conexion, recuperas con Directorio() todos esos ficheros y los borras.
2.- Modificas la clase para que no guarde esa información. Yo haría la 1 opción.
Un saluod
JLL
Sino recuerdo mal los ficheros que creaban los .log lo hacia la clase TFtpServer, tienes dos formas:otra cosita leandro veo que usas oFTP := TFTP():New( "ftp.mipagina.com", oInternet, "usuario","Clave" ), como haces para que no te genere los archivos log que crea ftp (en donde si los ves pone la clave y todo, son archivos planos y son ftp.log,ftp1.log,ftp2.log y asi sucesivamente te llena el disco duro de esos log y cualquier mortal los puede ver)
1.- La facil y rapida, una vez finalice la conexion, recuperas con Directorio() todos esos ficheros y los borras.
2.- Modificas la clase para que no guarde esa información. Yo haría la 1 opción.
Un saluod
JLL
Libreria: FWH/FWH1109 + Harbour 3.1.1 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA + OURXDBU -
S.O: XP / Win 7
Blog: http://javierlloris.blogspot.com.es/
e-mail: jllorispersonal@gmail.com
Editor de Recursos: PellecC
ADA + OURXDBU -
S.O: XP / Win 7
Blog: http://javierlloris.blogspot.com.es/
e-mail: jllorispersonal@gmail.com