[Lazarus-es] Imagenes

Claudio Romero clauslack en gmail.com
Mar Nov 30 13:27:35 CET 2010


Hola, para mi caso particular que yo usaba imaganes .tiff, los
componentes de Lazarus no me cargaban ni mostraba la imagen.
Y para no depender del formato, decidi hacer la carga de cualquier
tipo de imagen .gif, .jpg, .tiff etc en la base Firebird
con este codigo.

	if not OpenDialog1.Execute then exit;
	consulta:='INSERT INTO IMAGENES
(SOCIO,TIPO,IMAGEN,fecha)VALUES(:SOCIO,:TIPO,:IMAGEN,:fecha)';
	with SQLQuery1 do begin
		Close;		SQL.Clear;    SQL.Add(consulta);
		Params.ParamByName('socio').AsString:=E_CodAfiliado.Text;
		Params.ParamByName('imagen').LoadFromFile(Utf8ToSys(OpenDialog1.FileName),ftBlob);
		Params.ParamByName('tipo').AsString:=E_CodTipoImagen.Text;
		Params.ParamByName('fecha').AsDate:=GFechaHoraServidor;
        if SQLTransaction1.Active then SQLTransaction1.Commit;
		SQLTransaction1.StartTransaction;
		ExecSQL;
	end;
	SQLTransaction1.Commit;

Despues para ver la imagen y no renegar con Lazarus, use un programa
externo que soporta multiples formatos de imagenes (tanto en Windows
como Linux hat muchisimos tipo ACDSee, etc)
Para ver la imagen, la descargo en el disco local y la abro con un visor.
	try
	   	Screen.Cursor:=crSQLWait;
		//hay que guardar el nombre para sacar la extension, aunque abre jpg
con extension tif.
    	archivo:=ExtractFilePath(Application.EXEName)+'imagen.tif';
		try
			if SQLQuery2.FieldByName('imagen').IsNull then exit;
			TBlobField(SQLQuery2.FieldByName('imagen')).SaveToFile(archivo);
		except on e:exception do
			begin
				GrabaLog(Kinfo,'TFormInfoAfiliado.MI_VerImagenClick: '+e.Message);
				exit;
			end;
		end;
		EjecutarPrograma(GVisorImagenes+' '+archivo);
	finally
	   	Screen.Cursor:=crArrow;
	end;



Hace un año esta en producción, y los usuarios cargan imagenes
scaneadas sin problemas. Tanto JPG como TIFF.

Saludos.




More information about the Lazarus-es mailing list