Alaska Software Inc. - cambiar tamaño de fotos
Username: Password:
AuthorTopic: cambiar tamaño de fotos
Pedrito Gomezcambiar tamaño de fotos
on Tue, 24 Mar 2009 15:42:54 -0400
Hola a todos.
Como puedo hacer para fijar el tamaño de una foto, por codigo, fijando uno 
de los valores {x,y}, de tal manera que el otro valor se fije de manera 
proporcional al dado por codigo, tal cual lo hacen los utilitarios de 
edicion  graficos.
Por ej:
tengo una foto cuyo ancho es de 445 por 572 pixels. Debo establecer como 
valor de ancho, a traves de codigo, a 480, por una cuestion de espacio 
imprimible.
Deseo calcular el alto de manera que la foto permanezca proporcional.
Ocurre que las fotos capturadas difieren mucho en tamaño unas de otras.
Hoy dia uso algo similar a esto, pero me da valores variables en ambos ejes:
      If aSize[1] < 480
      	 aSize[1]   := ( oBitmap:xSize * 53 ) /100
         aSize[2]   := ( oBitmap:ySize * 53 ) /100
      ElseIf aSize[1] = 480
         aSize[1]   := ( oBitmap:xSize * 45 ) /100
         aSize[2]   := ( oBitmap:ySize * 45 ) /100
      ElseIf aSize[1] = 640
         aSize[1]   := ( oBitmap:xSize * 41.4 ) /100
         aSize[2]   := ( oBitmap:ySize * 41.4 ) /100
      ElseIf aSize[1] = 768
...................
endif

Funciona pero quisiera "afinar la puntería"......
Gracias
J.A. Diego KerejetaRe: cambiar tamao de fotos
on Wed, 25 Mar 2009 12:19:32 +0100
Hola Pedrito,

Creo recordar que en el ejemplo siguiente tienes una posible solucin:

C:\Alaska\XPPW32\SOURCE\samples\apps\ImgView

Saludos. Diego
Nolberto PaulinoRe: cambiar tamao de fotos
on Wed, 25 Mar 2009 08:43:07 -0400
Pedrito
Pablo Botella tiene una muy buena LIB llamada OT4XB, que maneja las grafica 
excelente

www.xbwin.com

Nolberto Paulino



"J.A. Diego Kerejeta" <DiegoKerejeta@euskalnet.net> escribi en el mensaje 
news:757ee1ca$4bef7d25$3ceb2@news.alaska-software.com...
> Hola Pedrito,
>
> Creo recordar que en el ejemplo siguiente tienes una posible solucin:
>
> C:\Alaska\XPPW32\SOURCE\samples\apps\ImgView
>
> Saludos. Diego
>
Nolberto PaulinoRe: cambiar tamao de fotos
on Wed, 25 Mar 2009 08:39:26 -0400
Hola Pedrito
Yo soy usuario de eXpress y esto se logra facir, con esta LIB

www.donnay-software.com

Nolberto Pualino





"Pedrito Gomez" <alejocenturion@hotmail.com> escribi en el mensaje 
news:65cf038f$51cf1405$b91c@news.alaska-software.com...
> Hola a todos.
> Como puedo hacer para fijar el tamao de una foto, por codigo, fijando uno 
> de los valores {x,y}, de tal manera que el otro valor se fije de manera 
> proporcional al dado por codigo, tal cual lo hacen los utilitarios de 
> edicion  graficos.
> Por ej:
> tengo una foto cuyo ancho es de 445 por 572 pixels. Debo establecer como 
> valor de ancho, a traves de codigo, a 480, por una cuestion de espacio 
> imprimible.
> Deseo calcular el alto de manera que la foto permanezca proporcional.
> Ocurre que las fotos capturadas difieren mucho en tamao unas de otras.
> Hoy dia uso algo similar a esto, pero me da valores variables en ambos 
> ejes:
>      If aSize[1] < 480
>      aSize[1]   := ( oBitmap:xSize * 53 ) /100
>         aSize[2]   := ( oBitmap:ySize * 53 ) /100
>      ElseIf aSize[1] = 480
>         aSize[1]   := ( oBitmap:xSize * 45 ) /100
>         aSize[2]   := ( oBitmap:ySize * 45 ) /100
>      ElseIf aSize[1] = 640
>         aSize[1]   := ( oBitmap:xSize * 41.4 ) /100
>         aSize[2]   := ( oBitmap:ySize * 41.4 ) /100
>      ElseIf aSize[1] = 768
> ...................
> endif
>
> Funciona pero quisiera "afinar la puntera"......
> Gracias
>
>
Pedrito GomezRe: cambiar tamaño de fotos
on Wed, 25 Mar 2009 09:19:24 -0400
Hola a todos.
Ya he solucionado el problema.
Gracias ppor su ayuda
Pedrito
Pedrito GomezRe: cambiar tamaño de fotos
on Thu, 26 Mar 2009 09:32:18 -0400
Hola a todos.
Esta es la solucion que encontre, con ayuda de Jose Luis Otermin.


.......

oBitmap := XbpBitmap():new()
oBitmap:Create()
IF File( ( nArea )->filename )
         oBitmap:loadfile( Alltrim( ( nArea )->filename ) )
ELSE
         oBitmap:loadfile( "no-foto.gif" )
ENDIF

      aSource := { 0, 0, oBitmap:xSize, oBitmap:ySize }
      aTarget := { 1, 1, 213, 295 }	  defino aca el espacio del que 
dispongo para imprimir


 guiado por Jose Luis, y copado de ImgView
      IF oBmp:autoScale
         nAspect := aSource[ 3 ] / aSource[ 4 ]
         IF nAspect > 1
            aTarget[ 4 ] := aTarget[ 3 ] / nAspect
         ELSE
            aTarget[ 3 ] := aTarget[ 4 ] * nAspect
         ENDIF
      ELSE
         aTarget[ 3 ] := aSource[ 3 ]
         aTarget[ 4 ] := aSource[ 4 ]
      ENDIF

      IF aTarget[ 3 ] < aSize[ 1 ] - 2
         nAspect := ( aSize[ 1 ] - 2 - aTarget[ 3 ] ) / 2
         aTarget[ 1 ] += nAspect
         aTarget[ 3 ] += nAspect
      ENDIF

      IF aTarget[ 4 ] < aSize[ 2 ] - 2
         nAspect := ( aSize[ 2 ] - 2 - aTarget[ 4 ] ) / 2
         aTarget[ 2 ] += nAspect
         aTarget[ 4 ] += nAspect
      ENDIF

 Imprime foto
      lOk :=::PrintXbpBitmap( oBitmap, 100, PosY - 10, aTarget[ 3 ], 
aTarget[ 4 ] )

Lo publico por sugerencia de Jose Luis, si sirve a alguien mas
Gracias a todos
Pedrito