Author |
Topic  |
spetric
  
Croatia
308 Posts |
Posted - Mar 02 2015 : 16:56:59
|
Hi Roy,
Great work. I have also ported your curves tool (partially) to C++ and added possibility to apply curve through any shape (free hand stroke, ellipse, spline, text, etc...). Works like a charm.
Thanks, Siniša |
 |
|
yogiyang
   
India
725 Posts |
Posted - Mar 02 2015 : 22:15:49
|
Spetric,
Are you going to share your handy work here?
Just curious to know.
On your web site I found the tool NiGulp. It allows one to use Photoshop filters! That is great. Can you share as to how you managed to achieve this and whether the software is developed 100% in Delphi or some other language.
I am personally looking for a way to load Photoshop filters in the software that I am developing so I am very much interested in knowing as to how you manage to load and handle Photoshop filters.
Regards,
Yogi Yang
Yogi Yang |
 |
|
spetric
  
Croatia
308 Posts |
Posted - Mar 03 2015 : 01:42:36
|
Hi Yogi,
Unfortunately, I do not program in Delphi, but in C++. I have posted a link to static library for Photoshop host, but I must check if link still exists (my site was compromised and I was forced to reset complete site). If it does not exists, I will upload it again.
However, there is another source code based on it (with Delphi "headers"):
http://meesoft.logicnet.dk/ Check the paragraph "8fb Plugin Interface".
HTH, Siniša |
 |
|
spetric
  
Croatia
308 Posts |
Posted - Mar 07 2015 : 16:07:27
|
Done!

I hope I packed it correctly. Here is a demo exe of shadow caster program (Super Duper Shadow Caster) with source code (C++). Example included:
attach/spetric/2015392583_shadow_caster_distrib.zip 3999.55 KB (updated)
When program is started, example image is loaded. To get a first impression, follow these steps: 1. Press "Load example selection" button and proceed to Step 2. (tab) 2. Press "Create shadow control" and proceed to Step 3. (tab) 3. Press "Drop shadow" button. Shadow is drawn (I hope so). 4. Press "Undo last" button to undo last operation. 5. Set blur radius to some value, set different intensity values and pefrom "Drop shadow" again to see the difference.
Now, you can go back to Step 2. and increase number of folding lines. Create new set of shadow controls, go to Step 3. and move lines across the image. When mouse is over control point, cursor changes to hand-point. Drag control points around to cast different type of shadows. You can cast multiple shadows as well (one by one).
Note: In Step 1. you can only draw lasso selection with mouse. In Step 2. you can only pan image with mouse. In Step 3. you can only move control points.
If there are some problems with demo, please let me know. Good luck, Siniša
Edit: blur radius is actually obsolete, as same thing can be achieved with feather value. Also, using feather value will adjust source rectangle size, while blurring the mask will leave it as is, which yields to cutting of blurred part of mask on the source rectangle border. Maybe to add mask downsizing according to blur radius.
Newest version: attach/spetric/201539164127_shadow_caster_distrib.zip 5092.06 KB
|
 |
|
w2m
   
USA
1990 Posts |
Posted - Mar 08 2015 : 17:43:39
|
GDIPlus Image Drawing by William Miller/Adirondack Full Source Compiled with DelphiXE7, but is expected to compile with Delphi 2010 or higher. Price: Free
GDIPlus Image Drawing features drawing pixels, ellipse brush, rectangle brush, opacity, transparency, rectangles, filled rectangles, round rectangles, filled round rectangles, ellipses, filled ellipses, erase brush, drawing lines, filling alpha and filling color using GDIPlus and layers. The demo shows how to draw and how to use backbuffer drawing with all of the above tools with GDI plus and ImageEn.
Only ImageEn and standard Vcl controls were used in the demo. The brush drawing tools are not threaded so they are not nearly as fast as commercial products such as the Paint Engine that has improved painting functionality and threading for ImageEn by www.nwscomps.com. 
Source Code: attach/w2m/20153817538_GDIPlusImageMaker.zip 106.67 KB
William Miller Adirondack Software & Graphics Email: w2m@hughes.net EBook: http://www.imageen.com/ebook/ Apprehend: http://www.frontiernet.net/~w2m/index.html Custom ImageEn Development |
 |
|
xequte
    
37815 Posts |
|
wesleybobato
  
Brazil
367 Posts |
|
spetric
  
Croatia
308 Posts |
Posted - Mar 13 2015 : 05:47:10
|
A little ad hoc app. to perform 3x3 adaptive convolution on 24-bit images (c++).

1. Desired filter (selected from combo box) is applied to gray-scale copy of original image (8-bit depth). 2. Gray-scale image pixels are loaded in appropriate floating-point array and normalized to 1. 3. Original image channels are also loaded into separate byte-type arrays. 4. Gray-scale array data at position [i,j] (neighbor pixels) is used as 3x3 convolution kernel. 5. Convolution is performed for each pixel and all channels. 6. Resultant image is copied to output.
attach/spetric/201531354517_adaptive_convolution_distib.zip 3525.49 KB
With best regards, Siniša |
 |
|
w2m
   
USA
1990 Posts |
Posted - Mar 19 2015 : 10:50:29
|
Post Messages Demo by William Miller/Adirondack Full Source Compiled with DelphiXE7, but is expected to compile with Delphi 2010 or higher. Price: Free

This application demonstrates how to post messages to a form which displays this message after the main form becomes visible... a runtime created OnAfterShow event if you will.
This application also demonstrates how to post a message to create a new user created runtime TImageEnVect event. In this case, the runtime created event could be considered a "OnAfterNewObject event". This event is executed every time a object is added to TImageEnVect. When the "OnAfterNewObject event" is executed, a modal form appears which asks if the object should be added. If the user replies "Yes" no action is taken. If the user replies "No" the new object is removed. Source Code: attach/w2m/2015319105426_PostMessage.zip 63.48 KB
Bill Miller Adirondack Software & Graphics Email: w2m@hughes.net EBook: http://www.imageen.com/ebook/ Custom Commercial ImageEn Development |
 |
|
rmklever
 
Norway
50 Posts |
|
w2m
   
USA
1990 Posts |
Posted - Apr 22 2015 : 13:42:35
|
Handling Multiframe Images By Bill Miller Adirondack Software & Graphics Full Source Demo Project Compiled with Delphi XE7 Price: FREE

Shows how to handle multi-frame TIF, GIF and ICO files with ImageEnMView. Open, add frames, insert frames, replace frames, delete frames, rotate frame, save, saveas and export selected frame.
Download:
attach/w2m/2015422142359_Multiframe.zip 51.87 KB
Bill Miller Adirondack Software & Graphics Email: w2m@hughes.net EBook: http://www.imageen.com/ebook/ Custom Commercial ImageEn Development |
 |
|
w2m
   
USA
1990 Posts |
Posted - May 08 2015 : 16:00:42
|
Create Thumbnail With IEConvertToThumbnail By Bill Miller Adirondack Software & Graphics Full Source Demo Project Compiled with Delphi XE7 Price: FREE  This project shows how to utilize the excellent IEConvertToThumbnail procedure in iexHelperFunctions.pas unit as well as to save full frame images and thumbnails.
Download: attach/w2m/201558155952_Thumbnails.zip 59.05 KB
Bill Miller Adirondack Software & Graphics Email: w2m@hughes.net EBook: http://www.imageen.com/ebook/ Custom Commercial ImageEn Development |
 |
|
rmklever
 
Norway
50 Posts |
|
w2m
   
USA
1990 Posts |
Posted - Jun 02 2015 : 11:56:00
|
LoadFromFileOnDemand With Annotations By Adirondack Software & Graphics Full Source Price: Free
This simple application was developed to test a potential bug in TImageEnMView to try to determine why ImageEnMView1.MIO.Params [idx].ImagingAnnot.ObjectsCount always returns 0. Although I was unable to find out what was causing the problem, the application may be useful to those developers who want to easily display vectorial objects in TImageEnVect as thumbnails in TImageEnMView.

Download: attach/w2m/201562122519_LoadFileOnDemand.zip 49.53 KB
Bill Miller Adirondack Software & Graphics Email: w2m@hughes.net EBook: http://www.imageen.com/ebook/ Custom Commercial ImageEn Development |
 |
|
rmklever
 
Norway
50 Posts |
Posted - Jun 24 2015 : 19:45:35
|
FX filter, Symmetric Nearest Neighbour by Roy M Klever Full source and demo exe Written in Delphi 2010

I like this filter but it gets quite slow at larger radiuses. If you figure out how to improve the speed I sure would love to hear about it.
Download: attach/rmklever/2015624194141_FXSNN.zip 1988.53 KB
Roy M Klever Klever on Delphi - www.rmklever.com |
 |
|
spetric
  
Croatia
308 Posts |
Posted - Jul 01 2015 : 04:12:17
|
Hi Roy,
At a first look, you can get rid of Sqrt function used for calculating variables d1 and d2 (distance), because it's expensive and you repeatedly call it inside 4 nested loops.
As variables d1 and d2 are used only for comparing (if d1 < d2 then begin), calling Sqrt is not necessary (you can compare d1^2 and d2^2 as well).
|
 |
|
rmklever
 
Norway
50 Posts |
Posted - Jul 02 2015 : 16:50:25
|
Hei Siniša,
Yes, that made quite a difference. Even if the result changed a little it is still acceptable. Thanks for the idea! I used this formula so I did not need to use LAB color space, which is quite slow and also would require sqrt in the processing of color comparing.
Roy M Klever Klever on Delphi - www.rmklever.com |
 |
|
rmklever
 
Norway
50 Posts |
Posted - Jul 14 2015 : 11:30:11
|
My attempt at a Clarity routine Delphi 2010 - Source and Exe

In this demo the blur value is scaled so it can be hard to see the effect if you use large images. The demo is just for testing.
I do not have LightRoom so I am not really sure what the Clarity function do but from what I have found on the net I came up with this.
Hope you find it useful
Download: attach/rmklever/2015714112919_FXLocalContrast.zip 1988.39 KB
Roy M Klever Klever on Delphi - www.rmklever.com |
 |
|
Uwe
  
284 Posts |
|
rmklever
 
Norway
50 Posts |
Posted - Jul 14 2015 : 13:11:25
|
Hi Uwe,
No I did not use any code from RawTherapee. I do not know that program at all. Actually I could not find any code samples of how to implement Clarity except one that I did not like in VB.
If I come up with a better solution or find some code explaining me the procedure I gone add it here but for now I am just guessing.
Well I did a lot of testing but none gave me the result I wanted. This was the closest I could get for the moment.
Do you have any resources of how it is implemented?
Roy M Klever Klever on Delphi - www.rmklever.com |
 |
|
Topic  |
|