ImageEn for Delphi and C++ Builder ImageEn for Delphi and C++ Builder

 

ImageEn Forum
Profile    Join    Active Topics    Forum FAQ    Search this forumSearch
Forum membership is Free!  Click Join to sign-up
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 ImageEn Library for Delphi, C++ and .Net
 ImageEn and IEvolution Support Forum
 ImageEn v7.5.0 Released
 New Topic  Reply to Topic
Author Previous Topic Topic Next Topic  

xequte

38127 Posts

Posted - Dec 12 2017 :  15:32:24  Show Profile  Reply
We have just released ImageEn v7.5.0, which is a free update if you purchased a license or extension after 13 December 2016. You can request the download from:

http://www.imageen.com/support/downloadrequest.html

Other users can extend their registration for 12 months at:

http://www.imageen.com/order/index.html#Extensions


Top Ten Enhancements

1. New Cloning Tool to erase unwanted content




2. New interactive Brush Tool to paint images




3. New interactive Rotation Tool to freely rotate and flip images

4. LibRaw can be used for Digital Camera Raw formats, providing support for more cameras, multi-shot photo and interpolation features

5. Enhanced PSD features, including support for loading and saving files without merged images, and reading and writing of Exif tags

6. New mouse interaction allows selection of background or subject using a Chroma Key algorithm




7. Filename filtering for TImageEnMView and TImageEnFolderMView

8. All new component icons, plus ImageEn properties can now be categorized in Object Inspector




9. Gradient, Alpha and Graduated Alpha fills

10. New Actions: TImageEnViewCloneTool, TImageEnViewBrushTool, TImageEnViewSprayTool, TImageEnViewRotateTool, TImageEnViewRotateAndCropTool, TImageEnViewShowGuidelines, TImageEnViewSelectChromaKey


Complete Change History: http://www.imageen.com/info/history.html


Nigel
Xequte Software
www.xequte.com
nigel@xequte.com

w2m

USA
1990 Posts

Posted - Dec 14 2017 :  14:13:12  Show Profile  Reply
I have been experimenting with the new brushtools which is awesome addition to ImageEn which has been desired by many users for years. Thank-you.

I am finding that with 32-bit RGBA painting, the painted brush alpha is not correct. Painting on the alpha channel does not paint at all when alpha is 0 and the alpha values are either incorrect or I am determining (getting) the alpha value under the mouse cursor incorrectly. To test this add the following to the BrushTools demo:
procedure TForm1.ImageEnView1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  iX: Integer;
  iY: Integer;
  iAlpha: Integer;
  iRGB: TRGB;
  iColor: TColor;
  iisImageLayer: Boolean;
begin
  iX := ImageEnView1.Layers[ImageEnView1.LayersCurrent].ConvXScr2Bmp(X);
  iY := ImageEnView1.Layers[ImageEnView1.LayersCurrent].ConvYScr2Bmp(Y);
  iisImageLayer := ImageEnView1.CurrentLayer is TIEImageLayer;
  if (iisImageLayer) and (iX >= 0) and (iX <= ImageEnView1.IEBitmap.Width - 1)
    and (iY >= 0) and (iY <= ImageEnView1.IEBitmap.Height - 1) then
  begin
    X1.Caption := 'X: ' + IntegerToString(iX);
    Y1.Caption := 'Y: ' + IntegerToString(iY);
    iRGB := ImageEnView1.Layers[ImageEnView1.LayersCurrent].Bitmap.Pixels[iX, iY];
    iColor := TRGB2TColor(iRGB);
    iAlpha := ImageEnView1.Layers[ImageEnView1.LayersCurrent].Bitmap.Alpha[iX, iY];
    ColorUnderCursor1.Brush.Color := DitherColor(iColor, iAlpha);
    Alpha1.Caption := 'Alpha: ' + IntToStr(iAlpha);
    Opacity1.Caption := 'Opacity: ' + IntToStr(IEAlphaToOpacity(iAlpha)) + '%';
  end;
end;

For example if you paint with an alpha of 128 the apparent dithered color is correct, but the actual alpha value is incorrect at 255.

Bill Miller
Adirondack Software & Graphics
Email: w2m@hughes.net
EBook: http://www.imageen.com/ebook/
Custom Commercial ImageEn Development
Go to Top of Page

xequte

38127 Posts

Posted - Dec 18 2017 :  13:40:52  Show Profile  Reply
Hi Bill

We're still deciding the best way to handle this. It is more complex than it seems, for example, if you paint an alpha 128 brush onto a solid image, the alpha of the image should not change, but the image should shine through the brush (i.e. painted with 50% transparency, however if you paint an alpha 128 brush onto a blank image, then presumably the image's alpha should change to 128 but be painted with 0% transparency.

So far so good. Now what happens if the image is already 128 alpha? Do we raise the alpha to 255 and paint with 50% transparency or leave it as 128 and paint with 0% transparency?

And worse, what if there is different levels of alpha where we paint, e.g. half blank and half opaque? Ugh.

I'm really not sure what the right answer is here. We may need to have two properties.


Nigel
Xequte Software
www.imageen.com
Go to Top of Page

w2m

USA
1990 Posts

Posted - Dec 18 2017 :  14:08:56  Show Profile  Reply
1. I would think that if the image is 32bit and the user draws on layer 0 (the raw image with no layers) you could draw the color that uses the selected brush color and alpha value. In this case, the original pixel color and alpha is repainted and overwrites the original pixel color and alpha. If the image is not 32bit (24-bit or less ) then you could draw a dithered color that uses the selected brush color and alpha but does not draw the alpha. I do not think the painted alpha should be adjusted at all biased on the pixels existing alpha value.
function DitherColor(AColor: TColor; AAlpha: Integer): TColor;
{ Dither a 32-bit color (with alpha value) to TColor. }
var
  iRGB: TRGB;
begin
  iRGB := TColor2TRGB(AColor);
  if (iRGB.r = 255) and (iRGB.g = 255) and (iRGB.b = 255) then
  begin
    iRGB.r := AAlpha;
    iRGB.g := AAlpha;
    iRGB.b := AAlpha;
  end
  else
  begin
    iRGB.r := Trunc(AAlpha / 255 * iRGB.r) + (255 - AAlpha);
    iRGB.g := Trunc(AAlpha / 255 * iRGB.g) + (255 - AAlpha);
    iRGB.b := Trunc(AAlpha / 255 * iRGB.b) + (255 - AAlpha);
  end;
  Result := TRGB2TColor(iRGB);
end;

2. If the image has a layer, the original pixel color and alpha is repainted which overwrites the original pixel color and alpha.

I hope this helps and thanks for thinking about this. Perhaps Fabrizio can provide some ideas as well.

Bill Miller
Adirondack Software & Graphics
Email: w2m@hughes.net
EBook: http://www.imageen.com/ebook/
Custom Commercial ImageEn Development
Go to Top of Page

xequte

38127 Posts

Posted - Dec 23 2017 :  23:47:04  Show Profile  Reply
Thanks for your feedback, Bill,

Will look into this after the new year. Will probably use Alpha Composting to handle it:

https://en.wikipedia.org/wiki/Alpha_compositing


Nigel
Xequte Software
www.imageen.com
Go to Top of Page

ali_reza_nazari

Canada
10 Posts

Posted - Dec 28 2017 :  08:31:32  Show Profile  Reply
#8203;hi,
i build PKIECTRL15.DPK, PKIEDB15.DPK
then build and install DPKIECTRL15.DPK
but have an error
try installation with setup.exe , but after open delphiXe raise same error
please help me
---
ERROR:
the procedure entry point @IExLayers@initialization$qqrv could not be located in the dynamic link library DPKIECTRL15.bpl

Dr.
IA Computer
Go to Top of Page

xequte

38127 Posts

Posted - Dec 28 2017 :  14:24:31  Show Profile  Reply
Hi Ali

You probably have another instance of ImageEn or the ImageEn BPL’s on your Delphi path. Alternatively, when you compiled your packages, they might be pointing to old ImageEn source or DCU files.

Search your system, remove any ImageEn files that you find, then reinstall ImageEn.

Nigel
Xequte Software
www.imageen.com
Go to Top of Page

ChrisD

USA
1 Posts

Posted - Mar 26 2018 :  12:09:26  Show Profile  Reply
I have submitted the form in order to access the download of the latest version of the software. I have not heard back from anyone. Will someone please assist me? We need the update in order to move to the Tokyo version of embarcadaro.

Go to Top of Page

xequte

38127 Posts

Posted - Mar 28 2018 :  03:29:26  Show Profile  Reply
Hi Chris

Have you checked your Spam folder?

I can't find any messages under your name. Can you confirm your email address?




Nigel
Xequte Software
www.imageen.com
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
Jump To: