This is the code I use, however the result is a selection that is 8 bits but is ignored applying filters from TImageenproc.
In attachment please find a demo project
procedure TForm1.Button3Click(Sender: TObject);
var
myProc:TImageenproc;
maskBmp:TIEBitmap;
J: Integer;
p, psel: pByte;
I: Integer;
begin
myProc := TImageEnProc.Create(nil);
maskBmp := TIEBitmap.Create;
try
maskbmp.PixelFormat := ie8g;
maskBmp.Width := imageenview1.SelectionMask.Width;
maskBmp.Height := imageenview1.SelectionMask.Height;
for J := 0 to maskBmp.Height-1 do
begin
p := maskbmp.ScanLine[j];
psel := imageenview1.SelectionMask.ScanLine[j];
case imageenview1.SelectionMask.BitsPerPixel of
1:
begin
for I := 0 to maskBmp.Width-1 do
begin
p^ := (pbytearray(pSel)^[i shr 3] and iebitmask1[i and $7])*255;
inc(p);
end;
end
else //8 bits
begin
for I := 0 to maskBmp.Width-1 do
begin
p^ := psel^;
inc(p);
inc(psel);
end;
end;
end;
end;
myproc.AttachedIEBitmap := maskbmp;
myproc.Blur(15); //apply feather
// maskbmp.Write('C:\Users\nwsco\Documents\DXE2_Projects\ImgProc\test.bmp');
maskbmp.CopyToTIEMask(imageenview1.SelectionMask);
// imageenview1.SelectionMask.Assign(maskbmp); //I have tried this too but the selection becomes 1 bit again
showmessage(inttostr(imageenview1.SelectionMask.BitsPerPixel)+' bits per pixel'); //Bits per pixels is 8
finally
myproc.Free;
maskBmp.Free;
end;
end;
attach/nwscomps/201810481947_Feather selection.zip
86.5 KB
Francesco Savastano
Add-ons for the ImageEn Library
web: http://www.fssoft.it/delphicomps.html