Dazu habe ich mir aus einigen Beispielen folgendes Programm (ohne GUI) gebastelt.
Leider erhalte ich aber folgenden Error.
An unhandled exception occurred at $00414BE9 :
PNGImageException : Too many colors to use indexed PNG color type
$00414BE9
$00410CB1
Hat jemand einen Rat für mich, wie ich das beheben könnte.
Code: Alles auswählen
program Project1;
{$mode objfpc}{$H+}
uses FPImage,FPReadpng,FPWritepng,sqlite3conn,strings,db,SysUtils,sqldb,
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ add your units here };
var bm: TStream;
h, w, i: integer;
d:Pchar;
s:string;
FImg: TFPMemoryImage;
FImgReader: TFPReaderpng;
FImgwriter: TFPWriterpng;
Sql: String;
sqlconn :TSQLConnection;
sqltrans:TSQLTransaction;
sqlquery:TSQLQuery;
begin
FImg:=TFPMemoryImage.create(256, 256);
FImgReader:=TFPReaderPNG.Create;
FImg.LoadFromFile('test.png', FImgReader);
begin
bm:=TMemorystream.Create;
FImgWriter := TFPWriterPng.Create;
FImg.SaveToStream(bm,FImgWriter);
bm.Position:=0;
for i := 1 to bm.Size do
begin
bm.Read(d, 1);
s := s + d;
end;
end;
SQLConn := TSQLite3Connection.Create(nil);
SQLConn.DatabaseName := 'test.db';
SQLTrans := TSQLTransaction.Create(nil);
SQLQuery := TSQLQuery.Create(nil);
Writeln('Opening database');
SQLConn.Open;
SQLQuery.Transaction := SQLTrans;
SQLQuery.DataBase := SQLConn;
SQLQuery.Open;
SQLQuery.SQL.Text:='insert into Tourizm (Photo) values (:Photo)';
//SQLQuery.Params.ParamByName('Photo').AsBlob:=s;
Writeln('Execting Query');
SQLQuery.ExecSQL;
SQLTrans.Commit;
bm.Free;
s:='';
end.