marcioe Posted December 1, 2016 Report Share Posted December 1, 2016 Pessoal, imagina um cadastro de produtos, onde o usuário busca a maioria das fotos da web. Então vem foto com tamanho grande e as vezes ao gravar no banco de dados costuma dar erros, devido ao tamanho da foto baixada. Então estava pensando em algo pra " redimensionar" essa foto antes de gravar no banco de dados. Agradeço a quem puder contribuir meu código de gravação de imagem *------------------------------------------------------------------------------- * Gravar a Logomarca da Empresa *------------------------------------------------------------------------------- FUNCTION INSERE_APAGA_FOTO_EMPRESA(T_OPERACAO_EMPRESA) T_ID_FOTO := 0 BEGIN TRANSACTION cQuery_Mtabela := 'DELETE from foto_empresa where CODIGO_EMPRESA = ' + TRANSFORMA_SQL(T_CODIGO,"N",06,0) + ' LIMIT 1' COMITAR_DADOS_SQL(cQuery_Mtabela) END TRANSACTION BEGIN TRANSACTION cQuery_Mtabela := "INSERT INTO foto_empresa ( " cQuery_Mtabela := cQuery_Mtabela + " CODIGO_EMPRESA " cQuery_Mtabela := cQuery_Mtabela + ",DATA_FOTO " cQuery_Mtabela := cQuery_Mtabela + ",FOTO " cQuery_Mtabela := cQuery_Mtabela + " ) VALUES ( " cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CODIGO,"N",06,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(DATE(),"D",08,0) + "," cQuery_Mtabela := cQuery_Mtabela + ANY2SQL( MemoRead( (T_FOTOGRAFIA) ) ) cQuery_Mtabela := cQuery_Mtabela + " )" COMITAR_DADOS_SQL(cQuery_Mtabela) END TRANSACTION HB_GCAll(.T.) RETURN .T. Quote Link to comment Share on other sites More sharing options...
aferra Posted December 2, 2016 Report Share Posted December 2, 2016 o que vc procura é resizebmp(), não sei se tem na sua versão, mas é por ai. agora tem esse no forum http://forums.fivetechsupport.com/viewtopic.php?f=6&t=13822 Quote Link to comment Share on other sites More sharing options...
marcioe Posted December 6, 2016 Author Report Share Posted December 6, 2016 Não consegui fazer Quote Link to comment Share on other sites More sharing options...
aferra Posted December 6, 2016 Report Share Posted December 6, 2016 qual a sequencia que vc usou? Quote Link to comment Share on other sites More sharing options...
marcioe Posted December 6, 2016 Author Report Share Posted December 6, 2016 Deixa eu explicar melhor. Imagina assim: o usuario tira uma Foto com a Web cam, dai o sistema Salva a Foto em c:\pasta_sistema\TMP_IMG.JPG e ao salvar o sistema "Lê essa imagem e grava no banco de dados", porem as vezes dependendo da webcam essa Foto tirada é de 900k ai congela o sistema. Mesmo eu configurando o MY.ini, REDEFINE IMAGE oT_FOTOGRAFIA var T_FOTOGRAFIA ID 4001 OF oFld_EMPRESA:aDialogs[ 1 ] adjust FILE T_FOTOGRAFIA UPDATE ON CLICK( cFile := SPACE(2000), cFile := DRIVE_TR+"\"+CURDIR() + "\TMP_IMG.JPG", AMPLIAR_IMG(cFile) ) Aqui eu gravo a imagem no banco de dados * Gravar a Logomarca da Empresa *------------------------------------------------------------------------------- FUNCTION INSERE_APAGA_FOTO_EMPRESA(T_OPERACAO_EMPRESA) T_ID_FOTO := 0 BEGIN TRANSACTION cQuery_Mtabela := 'DELETE from foto_empresa where CODIGO_EMPRESA = ' + TRANSFORMA_SQL(T_CODIGO,"N",06,0) + ' LIMIT 1' COMITAR_DADOS_SQL(cQuery_Mtabela) END TRANSACTION *---------------------------------------------------------------------------- BEGIN TRANSACTION cQuery_Mtabela := 'SET GLOBAL max_allowed_packet=1073741824' COMITAR_DADOS_SQL(cQuery_Mtabela) *------------------------------------------------------------------------- cQuery_Mtabela := "INSERT INTO foto_empresa ( " cQuery_Mtabela := cQuery_Mtabela + " CODIGO_EMPRESA " cQuery_Mtabela := cQuery_Mtabela + ",DATA_FOTO " cQuery_Mtabela := cQuery_Mtabela + ",FOTO " cQuery_Mtabela := cQuery_Mtabela + " ) VALUES ( " cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CODIGO,"N",06,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(DATE(),"D",08,0) + "," cQuery_Mtabela := cQuery_Mtabela + ANY2SQL( MemoRead( (T_FOTOGRAFIA) ) ) cQuery_Mtabela := cQuery_Mtabela + " )" COMITAR_DADOS_SQL(cQuery_Mtabela) END TRANSACTION HB_GCAll(.T.) RETURN .T. Queria uma Forma de Reduzir o Tamanho da imagem c:\pasta_sistema\TMP_IMG.JPG, pois as vezes ela tem 900 k ou mais dependendo da WEBCAM, com isso iria padronizar as imagens no banco de dados. a imagem é esta aqui que esta no C:\PASTA SISTEMA\........ Quote Link to comment Share on other sites More sharing options...
kapiaba Posted December 6, 2016 Report Share Posted December 6, 2016 Antes de gravar a imagem em seu banco, use a rotina do Eduardo Motta, para criticá-la e avisar ao uçuário que a imagem não está dentro do padrão do seu sistema. Depois de criticar, você pode chamar de dentro do seu programa, qualquer editor de imagem, para o uçuário modificá-la para o padrão do seu sistema, ou usando a idéia do Alessandro, redimensioná-la. Tendeu? Nem eu... kkkkkkkkkkkkkkkkkkkkkkkk Quote Link to comment Share on other sites More sharing options...
marcioe Posted December 6, 2016 Author Report Share Posted December 6, 2016 Ok, mas posso estar errado, mas resizebmp() Reduz o Objeto, e preciso reduzir o arquivo, que está no C:\XXX Teria algum exemplo de como seria então por favor... Quote Link to comment Share on other sites More sharing options...
kapiaba Posted December 6, 2016 Report Share Posted December 6, 2016 Sem tempo hoje: Veja: http://forums.fivetechsupport.com/search.php busque por: redimensionar imagen Quote Link to comment Share on other sites More sharing options...
marcioe Posted December 6, 2016 Author Report Share Posted December 6, 2016 usando SaveImage() reduziu o tamnho do JPG Acredito que esse seja o caminho oT_FOTOGRAFIA:SaveImage( "TMP_IMG.JPG", 2, 250 ) Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted December 6, 2016 Report Share Posted December 6, 2016 Olá Márcio, vou disponibilizar uma função completa que faz exatamente o que vc precisa é a que uso em meus sistemas. **========================================================================== STATIC FUNCTION GetPngMC(oImage) **========================================================================== LOCAL cFile,cStrBmp cFile := cGetFile( "Bitmap (*.bmp)| *.bmp|" + ; "DIB (*.dib)| *.dib|" + ; "PCX (*.pcx)| *.pcx|" + ; "JPEG (*.jpg)| *.jpg|" + ; "GIF (*.gif)| *.gif|" + ; "TARGA (*.tga)| *.tga|" + ; "RLE (*.rle)| *.rle|" + ; "All Files (*.*)| *.*" ; ,"Selecione o arquivo", 4 ) IF !Empty(cFile) .and. File(cFile) oImage:LoadBmp( cFile ) //redimenciona o tamanho da foto 256 x 194 pixel oImage:hBitmap := ResizeBmp( oImage:hBitmap, 256, 194, .T. ) //redimensiona cStrBmp := BmpToStr(oImage:hBitmap) //transf de img para string oImage:Refresh() // 0 -> Bmp // 2 -> Jpg // 13 -> Png oImage:SaveImage(cNome, 13, 75) ENDIF RETURN NIL Explicando, vc vai ler o arquivo em C: LoadBMP, depois redimenciona com REsizeBMP e salva novamente Saveimage . Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted December 11, 2016 Report Share Posted December 11, 2016 Olá Márcio, vou disponibilizar uma função completa que faz exatamente o que vc precisa é a que uso em meus sistemas. **========================================================================== STATIC FUNCTION GetPngMC(oImage) **========================================================================== LOCAL cFile,cStrBmp cFile := cGetFile( "Bitmap (*.bmp)| *.bmp|" + ; "DIB (*.dib)| *.dib|" + ; "PCX (*.pcx)| *.pcx|" + ; "JPEG (*.jpg)| *.jpg|" + ; "GIF (*.gif)| *.gif|" + ; "TARGA (*.tga)| *.tga|" + ; "RLE (*.rle)| *.rle|" + ; "All Files (*.*)| *.*" ; ,"Selecione o arquivo", 4 ) IF !Empty(cFile) .and. File(cFile) oImage:LoadBmp( cFile ) //redimenciona o tamanho da foto 256 x 194 pixel oImage:hBitmap := ResizeBmp( oImage:hBitmap, 256, 194, .T. ) //redimensiona cStrBmp := BmpToStr(oImage:hBitmap) //transf de img para string oImage:Refresh() // 0 -> Bmp // 2 -> Jpg // 13 -> Png oImage:SaveImage(cNome, 13, 75) ENDIF RETURN NIL Explicando, vc vai ler o arquivo em C: LoadBMP, depois redimenciona com REsizeBMP e salva novamente Saveimage . Márcio, resolveu ? kapiaba 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.