Veo que se me adelantaron, pero por lo menos dejame aportar un poco de código. Aquí te dejo una encriptacion sencilla, dado que aunque uses una encriptacion fuerte la clave tendrá que guardarse dentro de tu ejecutable, no veo la necesidad de complicarse la vida, solo se trata de ponérselo un poco mas difícil.
Código Delphi
[-]
procedure Cifrar(Buffer: PByte; Key: Longint; Count: Cardinal);
begin
RandSeed:= Key;
while Count > 0 do
begin
Buffer^:= Buffer^ XOR Byte(Random($FF));
inc(Buffer);
dec(Count);
end;
end;
begin
with TMemoryStream.Create do
try
LoadFromFile('d:\1.jpg');
Cifrar(Memory,1978,Size);
SaveToFile('d:\1.dat');
finally
Free;
end;
end;
var
Stream: TMemoryStream;
Jpg: TJPEGImage;
begin
Stream:= TMemoryStream.Create;
Jpg:= TJPEGImage.Create;
try
Stream.LoadFromFile('d:\1.dat');
Cifrar(Stream.Memory,1978,Stream.Size);
Jpg.LoadFromStream(Stream);
Image1.Picture.Assign(Jpg);
finally
Jpg.Free;
Stream.Free;
end;
end;
En cuanto al código del Fade que te paso Bicho, solo añadir que la imagen tienen que ser un Bmp para que funcione, si es un jpg tendrás que convertirla primero.
Y por ultimo, la marca de agua seria sencilla si las imágenes se guardaran en formato bmp, pero siendo jpg la cosa se complica.