Lo que me comentas tampoco me va. Investigando más, he descubierto que el ejemplo enlaza a otro archivo: ProEffectImage.pas En este archivo sale el codigo que se usa para los distintos efectos que hace el ejemplo y allí está el efecto Darkness con su codigo. Supongo que el problema esta en las primeras lineas del codigo, porque todas las demás son para hacer cada efecto.
unit ProEffectImage;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls,Math;
type
TProEffectImage = class(TImage)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
Procedure Effect_Invert;
Procedure Effect_AddColorNoise (Amount:Integer);
Procedure Effect_AddMonoNoise (Amount:Integer);
Procedure Effect_AntiAlias;
Procedure Effect_Contrast (Amount:Integer);
Procedure Effect_FishEye (Amount:Integer);
Procedure Effect_GrayScale;
Procedure Effect_Lightness (Amount:Integer);
Procedure Effect_Darkness (Amount:Integer);
Procedure Effect_Saturation (Amount:Integer);
Procedure Effect_SplitBlur (Amount:Integer);
Procedure Effect_GaussianBlur (Amount:Integer);
Procedure Effect_Mosaic (Size:Integer);
Procedure Effect_Twist (Amount:Integer);
procedure Effect_Splitlight (Amount:integer);
Procedure Effect_Tile (Amount: integer);
Procedure Effect_SpotLight (Amount: integer; Spot: TRect);
Procedure Effect_Trace (Amount: integer);
Procedure Effect_Emboss;
Procedure Effect_Solorize (Amount: integer);
Procedure Effect_Posterize (Amount: integer);
{ Published declarations }
end;
procedure Register;
implementation
{$R DATA.RES}
procedure Register;
begin
RegisterComponents('Samples', [TProEffectImage]);
end;
[...]
procedure Darkness(var src: tbitmap; Amount: integer);
var
p0

bytearray;
r,g,b,x,y: Integer;
begin
src.pixelformat:=pf24bit;
for y:=0 to src.Height-1 do begin
p0:=src.scanline[y];
for x:=0 to src.Width-1 do
begin
r:=p0[x*3];
g:=p0[x*3+1];
b:=p0[x*3+2];
p0[x*3]:=IntToByte(r-((r)*Amount)div 255);
p0[x*3+1]:=IntToByte(g-((g)*Amount)div 255);
p0[x*3+2]:=IntToByte(b-((b)*Amount)div 255);
end;
end;
end;
[...]
//----------------------
//-------------------------
//----------------------
Procedure TProEffectImage.Effect_Darkness (Amount:Integer);
Var BB:TBitmap;
Begin
BB := TBitmap.Create;
BB.PixelFormat := pf24bit;
BB.Assign (Picture.Bitmap);
Darkness (BB,Amount);
Picture.Bitmap.Assign (BB);
BB.Free;
end;
Que deberia de cambiar para que me aceptara jpeg?
Gracias y siento ser tan pesado.
