DataJuggler.PixelDatabase 6.2.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package DataJuggler.PixelDatabase --version 6.2.1
NuGet\Install-Package DataJuggler.PixelDatabase -Version 6.2.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DataJuggler.PixelDatabase" Version="6.2.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add DataJuggler.PixelDatabase --version 6.2.1
#r "nuget: DataJuggler.PixelDatabase, 6.2.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install DataJuggler.PixelDatabase as a Cake Addin
#addin nuget:?package=DataJuggler.PixelDatabase&version=6.2.1

// Install DataJuggler.PixelDatabase as a Cake Tool
#tool nuget:?package=DataJuggler.PixelDatabase&version=6.2.1

PixelDatabase.Net is an image processing library that uses Bitmap Query Language (BQL). to manipulate
images. If you know SQL for databases, you are 90% of the way to BQL.

This version is for .NET6 only.

This project started off inside a Windows Forms project called Transparency Maker, which I have ported to a Blazor project that is live PixelDatabase.Net https://pixeldatabase.net/.

This project has been tested while I built PixelDatabase.Net, but I am sure more updates may be needed.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
8.2.7 111 2/28/2024
8.2.6 89 2/27/2024
8.2.5 94 2/26/2024
8.2.4 76 2/26/2024
8.2.3 77 2/26/2024
8.2.2 70 2/26/2024
8.2.1 77 2/24/2024
8.2.0 79 2/24/2024
8.1.3 94 2/17/2024
8.1.2 86 2/16/2024
8.1.1 207 12/9/2023
8.1.0 102 12/7/2023
8.0.1 108 11/22/2023
8.0.0 93 11/19/2023
7.0.9 184 7/12/2023
7.0.8 186 4/24/2023
7.0.7 185 4/23/2023
7.0.6 322 1/10/2023
7.0.5 397 11/30/2022
7.0.4 342 11/9/2022
7.0.4-rc1 108 10/28/2022
7.0.3-rc1 110 10/25/2022
7.0.2-rc1 117 10/21/2022
7.0.1-rc1 128 10/21/2022
7.0.0-rc1 160 10/20/2022
6.2.1 482 7/12/2022
6.2.0 428 7/12/2022
6.1.5 470 1/23/2022
6.1.4 266 1/4/2022
6.1.3 265 12/31/2021
6.1.2 277 12/11/2021
6.1.1 472 12/11/2021
6.1.0 262 12/11/2021
6.0.7 281 11/17/2021
6.0.6 366 11/13/2021
6.0.5 303 11/13/2021
6.0.4 337 11/13/2021
6.0.3 302 11/13/2021
6.0.2 301 11/13/2021
6.0.1 299 11/11/2021
6.0.0 314 11/11/2021
5.1.12 349 10/6/2021
5.1.11 362 10/6/2021
5.1.10 319 8/24/2021
5.1.9 320 8/24/2021
5.1.8 323 8/24/2021
5.1.7 319 8/24/2021
5.1.6 392 8/22/2021
5.1.5 366 8/21/2021
5.1.4 371 8/18/2021
5.1.3 354 8/17/2021
5.1.2 335 8/15/2021
5.1.1 336 8/15/2021
5.1.0 333 8/11/2021
5.0.0 298 11/11/2021
1.6.1 317 8/11/2021
1.6.0 358 6/28/2021
1.5.0.3 378 4/24/2021
1.5.0.2 400 2/12/2021
1.5.0.1 380 2/12/2021
1.3.1 422 11/13/2020
1.3.0 398 11/13/2020
1.2.2 595 8/15/2020
1.2.0 604 7/11/2020
1.1.6 498 7/9/2020
1.1.5 478 7/8/2020
1.1.4 562 6/12/2020
1.1.3 462 6/12/2020
1.1.2 483 6/11/2020
1.1.1 459 6/11/2020
1.1.0 501 4/21/2020
1.0.7 466 4/15/2020
1.0.6 596 4/8/2020
1.0.5 525 3/11/2020
1.0.4 475 3/6/2020
1.0.3 523 3/1/2020
1.0.2 576 3/1/2020
1.0.1 572 3/1/2020
1.0.0 534 3/1/2020

7.12.2022: I removed ImageProcessor. I didn't realize it was a .NET Framework project.
I will learn how to do saturation with Primitives.


12.11.2021: I am trying again to target only .Net6.0.

12.11.2021: I added two overrides to the DrawText method to make it a little easier to call.

12.10.2021
Version 6.1.0: I added a DrawText method.

11.17.2021
Version 6.0.7: I changed the project to multi-target .Net5 and .Net6. The problem seems to occur in
AspNet.Core.Components in my site PixelDatabase.Net.

I made a few semi-breaking changes, which is I changed the calculation for the following properties:
BlueAverageDifference
BlueMaxDifference
GreenAverageDifference
GreenMaxDifference
RedAverageDifference
RedMaxDifference

I made this change, because the name is confusing compared to the calculation, and even I got confused so hopefully
this simplifies it. The only property that is a little confusing, is MinMaxDifference still takes Max - Min, but I justify
this by Abs(Min - Max) is the same as Max - Min.

I am testing 6.0 version in an isolated Blazor project, to see if something else of mine is causing the conflict with
AspNetCore.Components.

11.13.2021 (Take Five)
Version 6.0.6: Last and final fix to get Grayscale working. I had a bug in PixelQueryParser caused by
copied code that set TakeMax to TakeMin. Fixed.

11.13.2021 (Take Four)
Version 6.0.5: I wrote the GetMaxColor method, but I forgot to call it. Now it works for Set Grayscale Max.

11.13.2021 (Take Three)
Version 6.0.4: Set Grayscale now works for Average (default), Red, Green, Blue, Min, Max and Mean.

11.13.2021 (Take Two)
Version 6.0.3: Putting back to Any CPU. My mouse changed it to
x64 and Visual Studio didn't like it.

11.13.2021
Version 6.0.2: I added some new options for Set Grayscale for Min, Max and Mean.

11.11.2021: Back to .Net 5.0, as .Net 6.0 doesn't work at this time.

11.10.2021: 6.0 version now targets .Net 6.0.

10.6.2021
5.1.12: The previous version had a critical flaw, so please do not use version 5.1.11. I was trying to fix
the Alpha items getting updated on queries, and broke everything due to a copy and paste and not reading
that the Criteria List was being recreated. Now this is fixed, and the Alpha bug is fixed (finally!).

A new update to PixelDatabase.Net website is coming now.

10.6.2021
5.1.11: I now append Alpha > 1 in all queries that don't have anything to do with Alpha.
Testing any impact, but I have been adding Alpha > 2 to my queries for a while so this should solve that.

5.1.10: After getting Draw River working, it wasn't worth it, so I took it out. I have a lot of ideas, not all are good.

5.1.9: DrawRiverLeftToRight had an infinite loop. Fixed.

5.1.8: I had made a couple of mistakes on the 5.1.7 release. DrawRiver might work now.

5.1.7: I added a new method DrawRiver, and you pass in a color and a direction.

5.1.6: I added an optional parameter called FastSoftFactor to ImageClassifier.Sort() methods.
If FastSortFactor is passed in, the program will compare every 'x' pixel, where x equals fastSortFactor.

5.1.5: I added a new Sort feature, you can sort an entire directory of images by color with one line of code.

ImageClassifier.Sort(sourceFolder, outputFolder, UpdateStatus);

5.1.4: Turned out the resize image I copied was private. I changed it to public. Sorry about that.

5.1.3: I added a resize image function.

5.1.2: I fixed a bug with CopySubImage where I was testing the subImage had to be smaller height, width, where in fact it can the same size also. I changed less than to less than or equal to.

5.1.1: I added 2 new methods
1. CopySubImage
2. SaveAs

5.1.0: I added a Gradient feature
Update
Create Gradient
Set Color1 Orange X Y
Set Color2 225 50 120 X Y

1.6.0: I added a new feature called SplitImage.
Update
SplitImage TakeLeft 2490       

In the above example, the left half of the image is split to make a full head copy of the good side of an image, used for Character Creator Headshot Plugin.

1.5.0.2: This time it will work. Things are going to change. I can feel it.

1.5.0.1: I tried something that didn't work.

1.3.1: After I published 1.3.0 I realized System.Graphics.Common was updated from
4.7 to 5.0, so I updated that library.

1.3.0: This version was converted to .Net5. No other code changes were made at this time.

1.2.2: I fixed the way the PixelQueryParser works, and in theory I made it better.
I also added short cuts so you you can now type MinMaxDiff instead of MinMaxDifference - 6 less pixels, and much easier to spell. This applies to all the Differences: BlueGreenDiff, BlueRedDiff, GreenRedDiff, and MinMaxDiff.

1.2.1: I removed .Net Standard 2.1, since the only purpose for .Net Standard was to allow .Net Framework and .Net Core to work together, but in 3.1 .Net Framework and .Net Core parted for good. If anyone needs it I can put it back.

Also I added two new features for Scatter and Normalize.

1.2.0: I added a couple of new features and fixed some bugs with the callback delegates if they were null.
New methods:
CreateSubImage - The PixelDatabase must be loaded, pass in the TopLeft point and the rectange size.
SearchForSubImage - This method returns a SearchResult object with the TopLeft point.
class SearchResult - This class contains a Point and a Score. It has a confidence property, but I haven't coded it yet.
     
Here is a sample project you can use that takes a screen shot and you click the canvas (PictureBox)
containing the image to create sub images.
There is also a Search Mode that demonstrates searching for an image in another image.

https://github.com/DataJuggler/SubImageCreator

Code is new, so use at your own risk. I have a sample project on GitHub to test this that takes a screen
shot and you can click the picture of the screenshot to create sub images. All more of a test than anything
useful yet, but I might expand it over time.


1.1.6: Added a new method CreateSubImage. Tested and it works, but not tested very thoroughly

1.1.5: I added a new method ApplyPixel, which was added to the .Net Framework version so I can call this from a Paint.Net plug-in

1.1.4: I had to update DataJuggler.UltimateHelper.IsNumeric method to support negative numbers.

1.1.3: I removed Absolute value from BlueRedDifference, BlueGreenDifference and GreenRedDifference.
After working with these values for a few weeks, I discovered there is a difference between blue - red and red - blue, sometimes.

1.1.2: I fixed a bug that has been bugging me for days. Now you apply a color:
Update
Set Color 98 125 86

I had forgot to set the property SetColor to true.

1.1.1: I have been working with PixelDatabase.Net website, so quite a few chagnes needed to be checked in.

1.1.0: I discovered in my initial testing that the old way was using 7 gigs of memory to hold a list of
millions of PixelInformation objects. Now I do the BQL comparisons without instantiating tons of objects and
the memory foot print went down to under 300 meg for a Blazor website with a 20 meg image loaded.

1.0.7: I am publishing the version that is going to be on my website https://pixeldatabase.net/.

This version includes many new properties on a PixelInformation object, such as:
1. Min
2. Max
3. Average
4. MinMaxDiff
5. RedMinDiff
6. RedMaxDiff
7. RedAverageDiff
8. GreenMinDiff
9. GreenMaxDiff
10. GreenAverageDiff
11. BlueMinDiff
12. BlueMaxDiff
13. BlueAverageDiff

These should all work for queries such as:

Hide Pixels Where
MinMaxDiff > 25

Or

Update
Set Swap Blue Red
Where
RedMinDiff < 10


Diff is a shortcut for Difference. Previous docs may use Difference, and I am trying
to replace them as I see them.



1.0.6: I have been working on this project for several weeks, and I need to update Nuget.

1.0.5: I fixed a bug where Swap Colors was not taking the Alpha into account from the previous color.

1.0.4: I made some changes while working on the .Net Framework version, and I am trying to keep them in sync. The changes involved I added a new draw line in color feature, a new feature for LastUpdate can always be queried by:

Update
blah blah blah
Where
Pixels In LastUpdate

Also some changes to the Draw Line, which is still very slow, but now a message shows.
I need to create an abort for Draw Line, just haven't had a chance yet. I will work on this some more next week.

1.0.3: I added a new override to PixelDatabaseLoder for ImageUrl.

1.0.2: I had forgot to list the Project Url, as well as the description changed from untested, to lightly tested.

1.0.1: Changed TargetFramework netcoreapp3.1 to TargetFrameworks netstandard2.1;netcoreapp3.1

First release, i will update the rest of the info if it gets past proof of concept.