Página 1 de 1

Aplicativo com foto

Enviado: 06 Abr 2017 14:44
por JoséQuintas
Vou fazer meu primeiro aplicativo com foto.
Compensa salvar em MySQL?
Provavelmente será necessário também converter pra alguma representação ascii pra não ter problemas com salvamento.
Ou é isso, ou é correr o risco de estourar limite do Windows de arquivos em pasta.

Alguma sugestão?

Aplicativo com foto

Enviado: 06 Abr 2017 16:35
por MSDN
Quintas,

Se você está preocupado em estourar o limite do Windows de arquivos armazenados em pastas, imagine o que aconteceria se essas mesmas fotos fosse parar dentro uma tabela no MySQL, o tamanho que ficaria !
O mais indicado, na minha opinião, seria gravar o caminho da(s) pasta(s) e somente exibir.
Exemplo :
Imagem

Abraços

Aplicativo com foto

Enviado: 06 Abr 2017 16:51
por JoséQuintas
Por coincidência vai ser pra isso mesmo: imobiliária/vistoria.... rs

O detalhe é que ficando no disco, a pasta terá que estar liberada para acesso.

Aplicativo com foto

Enviado: 06 Abr 2017 17:20
por fladimir
blob

Aplicativo com foto

Enviado: 07 Abr 2017 11:43
por JoséQuintas
Pensei em usar hbtip, e codificar igual no email.

Pensando bem.... o tamanho deve ser equivalente a base de XMLs que já salvo em outros clientes.
Começar com MySQL e ver o que dá.

E pensar em como deixar navegar em várias imagens.

Acho que a questão interessante vai ser sobre imagens em JPG, sendo que a API do Windows não trabalha automático com esse formato.
Talvez a Bostaurus da HMG ajude...

Aplicativo com foto

Enviado: 07 Abr 2017 16:52
por JoséQuintas
Montei um teste com GTWVG pra visualizar.
Navega com setas, pgup, pgdown, rodinha do mouse, opção de zoom.... essas coisas básicas.

Código: Selecionar todos

#include "directry.ch"
#include "inkey.ch"

PROCEDURE Main()

   LOCAL acFiles, nKey, nRow, nCol, nLargura, nAltura, nMedida := 3, nInicial
   LOCAL nCont, cPath := "e:\fotos\diversos\"

   SetMode( 33, 110 )
   CLS
   SET EVENTMASK TO INKEY_ALL - INKEY_MOVE
   acFiles  := Directory( cPath + "*.jpg" )
   nInicial := 1
   DO WHILE nKey != K_ESC
      nAltura  := Int( MaxRow() / nMedida )
      nLargura := Int( MaxCol() / nMedida )
      nRow     := 1
      nCol     := 1
      FOR nCont = nInicial TO nInicial + ( nMedida * nMedida ) - 1
         wvt_DrawImage( nRow, nCol, nRow + nAltura - 1, nCol + nLargura - 1, cPath + acFiles[ nCont, F_NAME ] )
         nCol += nLargura
         IF nCol + nLargura > MaxCol()
            nCol := 1
            nRow += nAltura
         ENDIF
      NEXT
      nKey := 0
      DO WHILE nKey == 0
         nKey := Inkey(0)
         DO CASE
         CASE nKey == K_ESC
         CASE nKey == Asc( "+" )
            nMedida := Max( 1, nMedida - 1 )
         CASE nKey == Asc( "-" )
            nMedida := Min( 6, nMedida + 1 )
         CASE nKey == K_UP .OR. nKey == K_MWFORWARD
            nInicial := Max( 1, nInicial - nMedida )
         CASE nKey == K_DOWN .OR. nKey == K_MWBACKWARD
            nInicial := Min( Len( acFiles ) - nMedida ^ 2, nInicial + nMedida )
         CASE nKey == K_PGUP
            nInicial := Max( 1, nInicial - nMedida ^ 2 )
         CASE nKey == K_PGDN
            nInicial := Min( Len( acFiles ) - nMedida ^ 2, nInicial + nMedida ^ 2)
         OTHERWISE
            nKey := 0
         ENDCASE
      ENDDO
   ENDDO

   RETURN
Lembrando que a qualidade original é melhor.
Pra colocar aqui no fórum sempre reduzo pra 1/4 do tamanho. (original=3840x2160, reduz pra 1920x1080).
Já daria pro cliente brincar um pouco.... rs
fotos.png