Selecciona imagen de un TIFF
Selecciona imagen de un TIFF
Hola a todos, tengo esta linea que lee un archivo tiff con 5 imágenes:
@2,2 IMAGE oImageInicia OF oWnd FILE "d:\quiquesoft\SiCredit\Captura2\Imagenes3\111485901.tiff" SCROLL
¿Es posible seleccionar que imágen es la que quierno mostrar?
@2,2 IMAGE oImageInicia OF oWnd FILE "d:\quiquesoft\SiCredit\Captura2\Imagenes3\111485901.tiff" SCROLL
¿Es posible seleccionar que imágen es la que quierno mostrar?
Saludos
Quique
Quique
Re: Selecciona imagen de un TIFF
Mira se ayuda:
Code: Select all
#include 'fivewin.ch'
#define OFN_PATHMUSTEXIST 0x00000800
#define OFN_NOCHANGEDIR 0x00000008
#define OFN_ALLOWMULTISELECT 0x00000200
#define OFN_EXPLORER 0x00080000 // new look commdlg
#define OFN_LONGNAMES 0x00200000 // force long names for 3.x modules
#define OFN_ENABLESIZING 0x00800000
#define OFN_HIDEREADONLY 0x00000004 // Oculta a caixa de seleção Somente leitura.
#define OFN_NONETWORKBUTTON 0x20000 // Desabilita o botão [ REDE ] da Dlg
function aGetFiles( cMask, cTitle, nDefaultMask, cInitDir )
local cSelect, nAt, aFiles := {}
/*
local nFlags := nOr( OFN_PATHMUSTEXIST , OFN_NOCHANGEDIR , ;
OFN_ALLOWMULTISELECT , OFN_EXPLORER , ;
OFN_LONGNAMES, OFN_ALLOWMULTISELECT )
*/
local nFlags := nOr( OFN_PATHMUSTEXIST, OFN_NOCHANGEDIR, OFN_ALLOWMULTISELECT, ;
OFN_LONGNAMES, OFN_NONETWORKBUTTON )
SKINBUTTONS()
//cSelect := cGetFile( cMask, cTitle, nDefaultMask, cInitDir, .f., .t., nFlags )
cSelect := cGetFile( "Bitmap (*.bmp)| *.bmp|"+ ;
"DIB (*.dib)| *.dib|" + ;
"PCX (*.pcx)| *.pcx|" + ;
"JPEG (*.jpg)| *.jpg|" + ;
"GIF (*.gif)| *.gif|" + ;
"TARGA (*.tga)| *.tga|" + ;
"RLE (*.rle)| *.rle|" + ;
"Todos os Arquivos (*.*)|*.*|" ;
,"Selecione a Foto Desejada",1,,.F.,, nFlags )
cSelect := Left( cSelect, At( Chr( 0 ) + Chr( 0 ), cSelect ) - 1 )
if ! Empty( cSelect )
cSelect := StrTran( cSelect, Chr( 0 ), "," )
aFiles := hb_aTokens( cSelect, "," )
if Len( aFiles ) > 1
for nAt := 2 TO Len( aFiles )
aFiles[ nAt ] := aFiles[ 1 ] + "\" + aFiles[ nAt ]
next nAt
ADel( aFiles, 1 )
ASize( aFiles, Len( aFiles ) - 1 )
endif
endif
return aFiles
João Santos - São Paulo - Brasil
Re: Selecciona imagen de un TIFF
Gracias Karinha, pero cgetfile() me ayuda a seleccionar un archivo, lo que necesito es poder seleccionar la imágen dentro del archivo que ya tengo seleccionado, en el ejemplo que puse el archivo tiff tiene 5 imágenes, y lo que necesito es poder seleccionar la segunda o tercera.
Saludos
Quique
Quique
Re: Selecciona imagen de un TIFF
Talvez:
http://forums.fivetechsupport.com/viewt ... =3&t=22254
http://forums.fivetechsupport.com/viewt ... 31&start=0
http://forums.fivetechsupport.com/viewt ... =3&t=22254
http://forums.fivetechsupport.com/viewt ... 31&start=0
João Santos - São Paulo - Brasil
Re: Selecciona imagen de un TIFF
Gracias de nuevo Karinha, pero no solucionan el problema de seleccionar la imágen dentro del tiff
Saludos
Quique
Quique
Re: Selecciona imagen de un TIFF
Muestra un ejemplo autocontenido porfa. salu2.
João Santos - São Paulo - Brasil
Re: Selecciona imagen de un TIFF
Code: Select all
DEFINE WINDOW oWnd FROM 0, 0 TO 24, 80
@2,2 IMAGE oImageInicia OF oWnd FILE "111485901.tiff" SCROLL
ACTIVATE WINDOW oWnd MAXIMIZED
Saludos
Quique
Quique
Re: Selecciona imagen de un TIFF
¿ Que version de fwh usas ? . Lo pregunto por la posibilidad de usar gdi+ para resolver el problema .quique wrote:Lo que hace falta es poder decirle que en lugar de mostrar la primera imágen, muestre la segundaCode: Select all
DEFINE WINDOW oWnd FROM 0, 0 TO 24, 80 @2,2 IMAGE oImageInicia OF oWnd FILE "111485901.tiff" SCROLL ACTIVATE WINDOW oWnd MAXIMIZED
Code: Select all
HB_FUNC( GDIPLUSIMGGETFRAME )
{
Bitmap * gifImage = ( Bitmap * ) hb_parnl( 1 );
int index = hb_parni(2) ;
UINT nFrame = gifImage->GetFrameDimensionsCount();
GUID* pDimensionIDs = (GUID*)malloc(sizeof(GUID)*nFrame);
gifImage->GetFrameDimensionsList(pDimensionIDs, nFrame);
gifImage->SelectActiveFrame( &pDimensionIDs[0] , index );
int nWidth = gifImage->GetWidth() ;
int nHeight = gifImage->GetHeight() ;
Bitmap * frameImage = new Bitmap( nWidth, nHeight );
Graphics * gr = new Graphics( frameImage );
gr->DrawImage(gifImage, 0, 0, nWidth, nHeight);
delete gr ;
hb_retnl( ( HB_LONG ) frameImage );
}
partiendo de un hBitmap de gdi+ , y un numero de imagen ( empieza en cero ) devuelve un hbitmap gdi+ de la imagen del frame .
seria algo así :
Code: Select all
local hbitmap
local obmp := tgdiplus():new( "archivo.tif")
local hFrame:= GDIPLUSIMGGETFRAME(obmp:hbmp, 2)
GDIPLUSIMAGEDISPOSE(obmp:hbmp)
hbitmap:= GDIP_GETHBITMAP( hFrame )
.......... usar la imagen ......
GDIPLUSIMAGEDISPOSE( hFrame )
Re: Selecciona imagen de un TIFF
mastintin gracias, no supe como compilarlo.
Tengo FW 12.04 lo que hice fue incluir el código C copiando la ídea de otro fuente de los que incluye FW.
pero me marca varios errores comenzando con estos:
Error E2451 D:\\quiquesoft\\SiCredit\\Digital3\\prg\\Digital.prg 1716: Undefined symbol 'Bitmap' in function HB_FUN_GDIPLUSIMGGETFRAME
Error E2451 D:\\quiquesoft\\SiCredit\\Digital3\\prg\\Digital.prg 1716: Undefined symbol 'GIFiMAGE' in function HB_FUN_GDIPLUSIMGGETFRAME
La línea 1716 es
Bitmap * gifImage = ( Bitmap * ) hb_parnl( 1 );
o sea, la primera línea de la función
(esto es al compilar C, porque todavía falta ver que le atine a la insercción del código FW)
Tengo FW 12.04 lo que hice fue incluir el código C copiando la ídea de otro fuente de los que incluye FW.
Code: Select all
#pragma BEGINDUMP
#include <windows.h>
#include <winuser.h>
#include <wingdi.h>
#include "hbapi.h"
HB_FUNC( GDIPLUSIMGGETFRAME )
{
Bitmap * gifImage = ( Bitmap * ) hb_parnl( 1 );
.
.
.
.
hb_retnl( ( HB_LONG ) frameImage );
}
#pragma ENDDUMP
Error E2451 D:\\quiquesoft\\SiCredit\\Digital3\\prg\\Digital.prg 1716: Undefined symbol 'Bitmap' in function HB_FUN_GDIPLUSIMGGETFRAME
Error E2451 D:\\quiquesoft\\SiCredit\\Digital3\\prg\\Digital.prg 1716: Undefined symbol 'GIFiMAGE' in function HB_FUN_GDIPLUSIMGGETFRAME
La línea 1716 es
Bitmap * gifImage = ( Bitmap * ) hb_parnl( 1 );
o sea, la primera línea de la función
(esto es al compilar C, porque todavía falta ver que le atine a la insercción del código FW)
Saludos
Quique
Quique
Re: Selecciona imagen de un TIFF
Te falla porque es código C++ y no C y porque tienes que incluir la librería gdi+ al archivo de compilación. De todas formas con esa versión de fwh no podrás hacerlo pues te faltan el resto de las funciones fwh para gdi+ , las que inicializan el sistema gdi+ , carga ficheros de imagen , los libera , etc .
Lo siento
Lo siento
Re: Selecciona imagen de un TIFF
Mastintin, gracias por la respuesta