Tive esta idéa a trocentos anos atraz e nunca coloquei em pratica mesmo porque na epoca não existiam os padrões .JPG e GIF somente os padrões PCX, TIFF e BMP, inimagináveis de se trabalhar pelo tamanho que ocupavam.
Hoje o que vemos é que as imagens podem ter definição extrema com tamanho super reduzido.
E o nosso sonho sempre foi este poder armazenar as fotos do funcionários junto com seus dados no .DBF.
Se tem alguma biblioteca que faz isto acho que tenha, mas em puro Clipper sei que não.
Bom sem muito falatório vejam este código e façam os testes e reparos:
Código: Selecionar todos
function IMG2MEMO( arquivo )
bak_pont=0
destino := L2Hex(GetTickCount())+".TMP"
arqcria := fcreate(destino)
arqler := fopen( origem )
fimarq := fseek( arqler, 0, 2 )
for ponteiro = 0 to fimarq step 5000
bak := space( 5000 )
if ponteiro + 5000 > fimarq
bak := space( fimarq - ponteiro )
endif
fseek( arqler, ponteiro )
fread( arqler, @bak, len( bak ) )
bak_pont += len( bak )
fwrite( arqcria, bak )
next
fclose( arqler )
fclose(arqcria)
return memoread( destino )
cImagem := IMG2MEMO( "foto.jpg" )
...
replace CAMPOMEMO with cImagem
...
Qual é o esquema? voce passa o nome da imagem que deve ter no maximo 64k( um .JPG com este tamanho possui uma definição muito boa ) que é o tamanho maximo de um campo MEMO( ja entenderam, né ).
A função fará a leitura bia-a-bit, ou byte-a-byte da imagem e a gravará em outro arquivo( na verdade basta renomear um .JPG para .TXT da na mesma ) e fará o carregamento deste para a memória o resultado pode ser salvo em uma variável e então salva em um campo memo.
Legal né, agora fica por conta de voce fazerem o inverso, pegar o conteudo do campo memo e re-transformá-lo em um .JPG, hehehe!
Acho que funciona e voces?




