porque algo facil se convierte en una pesadilla...

porque algo facil se convierte en una pesadilla...

Postby QAZWSX2K » Mon Oct 31, 2011 1:15 pm

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
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
User avatar
QAZWSX2K
 
Posts: 363
Joined: Tue Oct 25, 2005 7:06 pm
Location: Bogota - Caracas

Re: porque algo facil se convierte en una pesadilla...

Postby jll-fwh » Mon Oct 31, 2011 1:36 pm

QAZWSX2K;

Para usar JPG necesitas usar la clase TImage No TBitmap.
Code: Select all  Expand view
   @ ::oDlg:nTop+25,0 IMAGE ::oImage FILENAME ::cFile NOBORDER;
                       SIZE ::oDlg:nWidth, ::oDlg:nHeight;
                       OF ::oDlg ADJUST PIXEL
 


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
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
User avatar
jll-fwh
 
Posts: 408
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia

Re: porque algo facil se convierte en una pesadilla...

Postby leandro » Mon Oct 31, 2011 6:08 pm

Este ejemplo me funciona a la perfeccion.... aqui hay una parte del codigo si lo necesitas completo con gusto te lo mando al mail
Code: Select all  Expand view


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



Espero sea lo que necesitas
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1481
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: porque algo facil se convierte en una pesadilla...

Postby Francisco Horta » Tue Nov 01, 2011 7:58 pm

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
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: porque algo facil se convierte en una pesadilla...

Postby AndresRomero » Wed Nov 02, 2011 7:59 pm

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/viewtopic.php?f=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.
AndresRomero
 
Posts: 11
Joined: Fri Nov 20, 2009 11:07 am

Re: porque algo facil se convierte en una pesadilla...

Postby Daniel Garcia-Gil » Wed Nov 02, 2011 10:17 pm

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
Image

imagen PNG
Image

imagen GIF
Image
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: porque algo facil se convierte en una pesadilla...

Postby QAZWSX2K » Thu Nov 03, 2011 11:24 am

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
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
User avatar
QAZWSX2K
 
Posts: 363
Joined: Tue Oct 25, 2005 7:06 pm
Location: Bogota - Caracas

Re: porque algo facil se convierte en una pesadilla...

Postby AndresRomero » Thu Nov 03, 2011 12:39 pm

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):

Code: Select all  Expand view


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
 


Si no lo necesitase, de verdad, no os molestaría.
Un saludo.
AndresRomero
 
Posts: 11
Joined: Fri Nov 20, 2009 11:07 am

Re: porque algo facil se convierte en una pesadilla...

Postby jll-fwh » Thu Nov 03, 2011 7:25 pm

QAZWSX2K;

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)


Sino recuerdo mal los ficheros que creaban los .log lo hacia la clase TFtpServer, tienes dos formas:

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 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
User avatar
jll-fwh
 
Posts: 408
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 54 guests