Author | Topic: cambiar tamaño de fotos | |
---|---|---|
Pedrito Gomez | cambiar 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 Kerejeta | Re: 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 Paulino | Re: 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 Paulino | Re: 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 Gomez | Re: 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 Gomez | Re: 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 |