Newsgroup: it.comp.lang.delphi
Titolo: Jpg e Database Interbase

Qualcuno conosce un metodo per inserire delle immagini .jpg in un database
Interbase (versione 6.0)?
Personalmente ho fatto tentativi e cercato nel web ma il massimo che sono
riuscito a fare è inserire un'immagine bitmap.
Grazie.
Emanuele.

 ha scritto nel messaggio
news:579f9.85285$pX1.2...@news2.tin.it...

Forse sparo una cavolata..
Hai provato ad includere la unit jpeg ( mi sembra) e a fare un load fromfile
dal componente image
...
^_Goblin_^

Scusa memorizzarti il percorso non ti basta?
Per il bmp che metodo hai usato?
Qualcosa si può fare, ma mi sembra poco produttivo caricare una tabella in
questo modo!
Ciao,
  Fabio

questo modo!
Il produttivo dipende tutto dal tipo di esigenze che sono scaturite
dall'analisi.
Io in un mio programma ho caricato con il metodo LoadFromFile del
TJPEGImage il file da disco, poi utilizzando gli appunti di Windows
(oggetto Clipboard) ho passato l'immagine in un TPicture.
A questo punto puoi assegnare il TPicture direttamente al campo del
database.
Non so se č la strada migliore perň funziona.
Ciao
Alfredo

Si perciň gli ho chiesto quale metodo abbia usato, perchč alla fine si puň
fare uguale cosě, anche se come tu ben sai una volta portata in una TPicture
la compressione del jpg non č piů utile. Credo quindi che per jpg voleva
intedere proprio la possibilitŕ di risparmiare in dimensione per immagini
molto grosse.
Cmq dipende dal lavoro, se č uno importante meglio lasciare i file esterni
al database, si evitano grossi casini.
Ciao,
  Fabio

la compressione del jpg non č piů utile. 
Mi pare una giusta considerazione.
Quanto al sistema che ho proposto cosa ne pensi?
Non mi sono mai preso la briga di approfondire maggiormente
l'argomento, credo perň che passare per ogni immagine da caricare
dagli appunti di Windows non sia la soluzione piů performante.
Ciao.

 dagli appunti di Windows non sia la soluzione più performante.
No anzi, si usa anche altre volte il passaggio via clipboard, anche se il
jpg dovrebbe essere supportato come formato dai componenti Delphi.
Un'altra soluzione è inserire in archivio il file jpg senza importarsene che
è un file immagine, lo si carica come file di dati generico, credo si dica
in formato binario, e quando serve si ricrea il file in locale e lo si mette
a video. Così l'occupazione di memoria nel database è quella relativa ad un
jpg e non all'esploso dell'immagine stessa come fa il TPicture.
Cmq sono diverse soluzioni allo stesso problema, ognuno ha pro e contro che
bisogna valutare "in campo".
Saluti,
  Fabio

"Gandalf"

Dovrebbe essere sufficiente passarla ad un parametro di inserimento
mediante il metodo SaveToStream della jpeg.
// scritto qui, quindi...
procedure AddJPeg(Source: TJPEGImage; Chiave: Longint);
var tmp: TMemoryStream;
begin
  tmp := TMemoryStream.Create;
  try
    // se necessario apri transazione,
    // fai il prepare della qry, etc
    Source.SaveToStream(tmp);
    tmp.Seek(0, soFromBeginning);
    qryJPGSaver.ParamByName('CheChiave').AsInteger = Chiave;
    qryJPGSaver.ParamByName('NuovaJPEG').LoadFromStream(tmp, ftBlob);
    qryJPGSaver.ExecSQL;
    // se necessario unprepare,
    // chiudi transazione, etc
  finally
    tmp.Free;
  end;
end;
Ovv.te la query sara' qualcosa tipo
UPDATE IMMAGINI
SET IMMAGINE = :NuovaJPEG
WHERE CHIAVE = :CheChiave;
Saluti
Paolo Arosio