Cortar imagem
Moderador: Moderadores
- nilton579
- Usuário Nível 1

- Mensagens: 31
- Registrado em: 05 Fev 2008 20:23
- Localização: MANAUS
- Contato:
Cortar imagem
Bom dia!
Alguém sabe dizer se existe alguma rotina ou função em Harbour/Minigui para cortar uma imagem?
Estou implementando um aplicativo para registro de acesso na recepção de um hospital, com registro da imagem do visitante. No entanto, a imagem obtida da webcam está na horizontal, e necessito colocá-la num formato próximo de retrato 3x4. Apenas redimensionar a imagem não surtiu um efeito muito bom.
Se alguém puder me dar uma luz, agradeceria muito.
Alguém sabe dizer se existe alguma rotina ou função em Harbour/Minigui para cortar uma imagem?
Estou implementando um aplicativo para registro de acesso na recepção de um hospital, com registro da imagem do visitante. No entanto, a imagem obtida da webcam está na horizontal, e necessito colocá-la num formato próximo de retrato 3x4. Apenas redimensionar a imagem não surtiu um efeito muito bom.
Se alguém puder me dar uma luz, agradeceria muito.
Clenilton Alencar
Minigui Extended 18.06 -> 19.04
BRMake 2.05
Borland C++
Minigui Extended 18.06 -> 19.04
BRMake 2.05
Borland C++
Cortar imagem
Usa hbfimage (freeimage)
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
Cortar imagem
En cualquiera de las dos HMG esta disponible la lib BT
http://www.hmgforum.com/hmgdoc/BosTauru ... eGuide.htm
http://www.hmgforum.com/hmgdoc/BosTauru ... eGuide.htm
- nilton579
- Usuário Nível 1

- Mensagens: 31
- Registrado em: 05 Fev 2008 20:23
- Localização: MANAUS
- Contato:
Cortar imagem
Bom-dia!
@ aSimoes: não consegui encontrar documentação sobre hbfimage. Teria um link que possa informar?
@Claudio Souto: infelizmente, a BosTaurus só permite redimensionar a imagem, e não cortar. O que necessito é cortar parte de uma imagem paisagem para compor uma imagem retrato.
Sigo pesquisando. Obrigado pela ajuda!
@ aSimoes: não consegui encontrar documentação sobre hbfimage. Teria um link que possa informar?
@Claudio Souto: infelizmente, a BosTaurus só permite redimensionar a imagem, e não cortar. O que necessito é cortar parte de uma imagem paisagem para compor uma imagem retrato.
Sigo pesquisando. Obrigado pela ajuda!
Clenilton Alencar
Minigui Extended 18.06 -> 19.04
BRMake 2.05
Borland C++
Minigui Extended 18.06 -> 19.04
BRMake 2.05
Borland C++
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Cortar imagem
Clenilton, bom dia.
Aqui uso a rotina abaixo, é um exemplo pra diminuir o tamanho da imagem, não sei se ajuda.
Nota: Tem que anexar ao seu script de compilação as lib GD( libbgd.lib e gdlib.lib) a libbgd.lib é gerada a partir da bgd.dll,
Download bgd.dll from this link:
http://www.boutell.com/gd/http/gdwin32.zip
Para gerar a lib a partir da DLL uso assim:
Aqui uso a rotina abaixo, é um exemplo pra diminuir o tamanho da imagem, não sei se ajuda.
Código: Selecionar todos
FUNCTION MAIN()
DIMINUI_IMAGEM_PORT('TESTE.JPG')
RETURN(.T.)
********************************
FUNCTION DIMINUI_IMAGEM_PORT(vARQ)
********************************
Local aArq := {}
Local oImage_tam
Local cFILE_TEMP := GERAFILE()+".jpg" // gera um nome de arquivo temporario
LOCAL P1:=0,PX2:=0,PX1:=0,P2:=0
TRY
fCLOSE(vARQ)
__CopyFile(vARQ,(cFILE_TEMP))
CATCH
ShowMsg('Erro ao tentar redimensionar a imagem, favor revisar as permissão de usuário do Windows')
END
#IfDef __XHARBOUR__
oImage_tam := GDImage():LoadFromFile( cFILE_TEMP )
#else
oImage_tam := GDImage():LoadFromJpeg( cFILE_TEMP )
#endif
p1:=oImage_tam:Width() //800
p2:=oImage_tam:Height() //600
px1:=(p1*10)/100 // fica com apenas 90 porcento da imagem, ou seja tirou apenas 10 porcento
px2:=(p2*10)/100 // fica com apenas 90 porcento da imagem, ou seja tirou apenas 10 porcento
oImage_tam:Resize( px1 , px2 )
oImage_tam:SaveJpeg(cFILE_TEMP)
#IfDef __XHARBOUR__
gdImageDestroy(oImage_tam)
#endif
oImage_tam:=Nil
Return(cFILE_TEMP)Download bgd.dll from this link:
http://www.boutell.com/gd/http/gdwin32.zip
Para gerar a lib a partir da DLL uso assim:
Código: Selecionar todos
D:\devel\bcc72\bin\impdef -a libbgd.def bgd.dll
D:\devel\bcc72\bin\implib -a libbgd.lib libbgd.defLeonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- nilton579
- Usuário Nível 1

- Mensagens: 31
- Registrado em: 05 Fev 2008 20:23
- Localização: MANAUS
- Contato:
Cortar imagem
Agradeço demais a ajuda. Mas preciso mesmo é cortar a imagem.
Vi que a bibliteca hbfimage provavelmente tem esse recurso, pois existe a função "FI_COPY" em que se informam as coordenadas da imagem a serem copiadas para geração de nova imagem. No entanto, não existe nenhuma documentação ou código para estudo.
Vi que a bibliteca hbfimage provavelmente tem esse recurso, pois existe a função "FI_COPY" em que se informam as coordenadas da imagem a serem copiadas para geração de nova imagem. No entanto, não existe nenhuma documentação ou código para estudo.
Clenilton Alencar
Minigui Extended 18.06 -> 19.04
BRMake 2.05
Borland C++
Minigui Extended 18.06 -> 19.04
BRMake 2.05
Borland C++
Cortar imagem
Para redimensionar a imagem:
Não testei mas a FI_COPY deve fazer o recorte da imagem
Não testei mas a FI_COPY deve fazer o recorte da imagem
Código: Selecionar todos
cPng := "TESTE.PNG"
Fi_Initialise()
image := Fi_Load( FIF_PNG, cPng, PNG_DEFAULT )
width := 300
height := 200
rescale := fi_Rescale( image, width, height, FILTER_BICUBIC )
Fi_Save( FIF_PNG, rescale, "rescale.png", PNG_DEFAULT )
Fi_DeInitialise()
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
Cortar imagem
Clenilton:
BT_BitmapClone (hBitmap, Row, Col, Width, Height)
Clones the specified bitmap and returns a handle to the cloned bitmap.
hBitmap: is a handle to the origin bitmap.
Row, Col, Width, Height: specifies the dimensions in pixels of the rectangle to clone. For default: Row = 0, Col = 0, Width = BT_BitmapWidth(hBitmap), Height = BT_BitmapHeight(hBitmap).
BT_BitmapClone (hBitmap, Row, Col, Width, Height)
Clones the specified bitmap and returns a handle to the cloned bitmap.
hBitmap: is a handle to the origin bitmap.
Row, Col, Width, Height: specifies the dimensions in pixels of the rectangle to clone. For default: Row = 0, Col = 0, Width = BT_BitmapWidth(hBitmap), Height = BT_BitmapHeight(hBitmap).
- nilton579
- Usuário Nível 1

- Mensagens: 31
- Registrado em: 05 Fev 2008 20:23
- Localização: MANAUS
- Contato:
Cortar imagem
Meu código está assim:
nmx := diskname()+":\"+curdir()+"\fotos\fotocut"+left(time(),2)+substr(time(),4,2)+".bmp"
nm := alltrim(oform.txt_arquivo.value)
fi_initialise()
imagem1 := fi_load(FIF_JPEG, nm , JPEG_DEFAULT )
imagem2 := fi_copy( imagem1 , 0,40,230,240)
oform.oimage.value := imagem2
fi_save( FIF_JPEG , imagem2 , nmx , JPEG_DEFAULT )
fi_unload(imagem1)
fi_unload(imagem2)
fi_deinitialise()
O erro ocorre na linha do fi_save, erro de parâmetros.
nmx := diskname()+":\"+curdir()+"\fotos\fotocut"+left(time(),2)+substr(time(),4,2)+".bmp"
nm := alltrim(oform.txt_arquivo.value)
fi_initialise()
imagem1 := fi_load(FIF_JPEG, nm , JPEG_DEFAULT )
imagem2 := fi_copy( imagem1 , 0,40,230,240)
oform.oimage.value := imagem2
fi_save( FIF_JPEG , imagem2 , nmx , JPEG_DEFAULT )
fi_unload(imagem1)
fi_unload(imagem2)
fi_deinitialise()
O erro ocorre na linha do fi_save, erro de parâmetros.
Clenilton Alencar
Minigui Extended 18.06 -> 19.04
BRMake 2.05
Borland C++
Minigui Extended 18.06 -> 19.04
BRMake 2.05
Borland C++
Cortar imagem
Esse erro tem haver com o tamanho da imagem que você quer cortar, pode estar maior que a original.
ops nmx veja essa variável você está tentando salvar um bmp como jpg ?
Os parâmetros
int left, int top, int right, int bottom
ops nmx veja essa variável você está tentando salvar um bmp como jpg ?
Os parâmetros
int left, int top, int right, int bottom
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- nilton579
- Usuário Nível 1

- Mensagens: 31
- Registrado em: 05 Fev 2008 20:23
- Localização: MANAUS
- Contato:
Cortar imagem
Caraca!!! Era isso mesmo!asimoes escreveu:Esse erro tem haver com o tamanho da imagem que você quer cortar, pode estar maior que a original.
ops nmx veja essa variável você está tentando salvar um bmp como jpg ?
Os parâmetros
int left, int top, int right, int bottom
Muito obrigado, amigo !!!
Clenilton Alencar
Minigui Extended 18.06 -> 19.04
BRMake 2.05
Borland C++
Minigui Extended 18.06 -> 19.04
BRMake 2.05
Borland C++