Fred's ImageMagick Scripts
fmwconcepts.com
fmwconcepts.com
Something like images (imagemagick), video (ffmpeg/vlc), audio (sox), phone (asterisk/etc.), SMS (pdus/various), linguistics (various), classification (NNs), version control, snapshots, clustering (PXE/corosync/pacemaker), security (kernel toolkits), transaction systems and databases (sqlite/RDBMS/noSQL/time series), networking (filtering/firewall rules, intermittent connectivity, local multidrop protocols, tcpdump/wireshark), kernel security toolkits, CI/CD, etc.
Scope would be essentially everything except tools lying within the popular web stacks.
The goal would be that a student with interest could work their way through the syllabus and emerge a capable multi-domain unix hacker, rather than needing to encounter these problem domains over decades of career, rediscovering well worn approaches.
I learned programming through the web, so I lack a lot of knowledge in basic systems / bash / *nix / I'm not even sure how to call that.
I've googled so many time "learn bash" etc but it's never really what I'm looking for.
I regularly discover tools that are so basic yet so powerful (all things you mention) yet I feel there is a lack of (great) resources online to "learn the basic tools of your CL".
Sorry for the sarcasm, I just feel your pain. Learning even basic things in bash has been slow for me too. I love it. I prefer it to GUIs on most things I have figured out.
But there's so much to learn.
https://www.youtube.com/watch?v=pb3k0sGKrjQ
Plug for book that resulted:
https://www.mercurial-scm.org/pipermail/mercurial/2015-March...
Coreutils is a good place to start.
I spent 10 years avoiding awk, because every time I typed 'man awk' I was overwhelmed by the GNU monstrosity. Then I found the man page for the plan9 implementation of awk (http://man.cat-v.org/plan_9/1/awk) and learned the language in fifteen minutes.
Rather, info manuals are GNU's official (self-invented I think) documentation system. They make manpages only because of their popularity, but they direct you to the info pages for more info. When other projects have too much documentation for a manpage, they split it among several pages, like perl, openssl, zsh, git, borg, btrfs, etc. Personally, I like both, and wouldn't rank one above the other.
If there is a better source, I don't know it.
One notable example is the time I had to learn C# 4 years ago. It took an entire morning to scan through the entire language reference and then later I found out I already knew a lot more than "advanced" devs who would just look up stuff as they needed it, without knowing what actually is available in the first place.
I feel its the only sensible advice if you want to learn a lot on your own with limited time.
http://linuxcommand.org/tlcl.php/
https://www.amazon.com/UNIX-Linux-System-Administration-Hand...
Identify someone at your work or school who you feel always has a nice perspective and who you trust; then seek out their opinion and advice when you have questions. You can learn a lot in a fairly short amount of time by applying this practice.
You can also find what I've heard called "silent teachers" - there's no formal or informal relationship between the two of you, but you're always watching what they say, observing the things they care about, etc.
If you're in a situation where you're not employed full-time in a technical position it becomes a little harder but you can still do it. Much of it depends on your local context.
Here's 1 such example from the 1st result from a Google search for "github awesome security list":
Personally I discovered a lot of great tools in my distribution's package management database.
As a small example:
You have: 10 kcal / g * 24 kg * .13USD/kWh
You want: USD
* 36.261333
It's so useful when converting between different unitsNaSC looks nice.
Back when I used Gentoo, I discovered a lot of interesting software by simply browsing their portage repository and installing packages that sounded interesting. It's organized into sections like you describe. There were (probably still are) web sites to browse the package database too. FreeBSD's ports are organized in a similar manner.
It seems Office Lens depends on the online servers and doesn't do anything offline.
I still prefer offline solutions, especially open-source ones.
Somehow that feels much longer ago than just 7 years, maybe its just the website or the feeling of nostalgia looking at it.
http://www.fmwconcepts.com/imagemagick/fisheye2rect/index.ph...
I guess I never really understood why fisheye lenses were so valuable, until now. =)
[0] https://faa-aviation-data-portal.github.io/routeDemo/camera/...
I then use OP's script to "unroll" each fisheye photo. I then stick them together top to bottom with looks like this:
https://faa-aviation-data-portal.github.io/routeDemo/camera/...
Which I feed into this:
https://github.com/googlevr/vrview
voila
took a couple hours start to finish.
Looks cool though! I would love a product that behaves like a proxy/CDN for images and does some on-demand resizing/filtering.
Backed by Imagemagick. We usually run it behind a CDN like Akamai or Cloudfront but you can also use Apache httpd’s built-in file caching.
http://www.fmwconcepts.com/imagemagick/dominantcolor/index.p...
Proper way to do this is to create an image processing SaaS around these scripts, announce to store the filter presets on blockchain and create a marketplace platform for filter creators, have a $50M ICO, spend the cash on lambos, and fail awesomely.
EDIT: Ok, I just didn't scroll far enough :) https://news.ycombinator.com/item?id=16668686
On the one hand you have giant startups earning millions from a tiny SaaS tool.
And on the other hand you have a single developer sharing a huge library of useful tools for free.
It's a crazy world now, it seems opportunity is everywhere.
* tshirt- Transforms an image to place it in a region of a tshirt image
* tileimage - Tiles an image to a given size with various tile arrangements.
* shadows - Applies drop shadows to an image.
* grid - Superimposes a set of horizontal and/or vertical grid lines on an image.
* lupe - Applies a magnifying glass effect in a local area of an image.
* multicrop - Crops and unrotates multiple images from a scanned image.
* peelingpaint - Applies a peeling paint effect to an image.
* picframe - Adds a picture frame around an image.
* picturefold - Applies a map-like folded appearance to an image.
* PINBARREL - Corrects or applies pincushion and/or barrel lens distortion to an image.
* PUZZLE - Applies a puzzle like effect to an image.
* RANDOMCLIPART - Randomly distributes clip art over the image.
* SKETCH - Applies a sketch effect to an image. SMARTCROP - Automatically crops an image to a given size around the hightest detail region.
* TILER - Converts an image into a tilable texture.
* UNPERSPECTIVE - Automatically removes pespective distortion from an image.
* UNROTATE - Automatically unrotates a rotated image and trims the surrounding border.
* VINTAGE1 - Applies a a classic vintage effect to an image
* DIAGCOLLAGE - Collages three images in a diagonal orientation.
* DEFISHEYE - Corrects for fisheye distortion in an image.
* EMBROIDERY - Applies an embroidery effect to each color in an image.
* DOMINANTCOLOR - Computes the dominant color in an image.
* OVERLAPCROP - Creates a sequence of cropped subsections permitting optional overlap of the subsections.
* TRIMMER - Trims the background from any number of specified sides of an image.
* outfit - use texture image onto image of clothing
* splitcrop - split one image into many pieces
* whiteboard - Processes a picture of a whiteboard to clean up the background and correct the perspective
* postagestamp - convert image into stamp
* glow - add glow effect
It is quite powerful though somewhat eccentric.
I once developed some scripts to use it to "develop" jpg from raw images, see https://github.com/claes/gmic-extensions
http://gmic.eu/reference.shtml#subsection15
And as the commands are built-in, no needs for external scripts, those effects are available from any interface using the `libgmic` API (including C/C++ programs).
Particularly interesting are features such as being able to save images in different colour spaces, e.g. 4:2:0, going lo-res on the chroma for a lower ultimate file size in jpg.
If I had a lifetime spare I would complete the PHP Imagick documentation and write a version of Fred's scripts in PHP, so they can be chained together in a nifty object oriented way...
https://jcupitt.github.io/libvips/API/current/using-cli.html
Much better performance and better image format support for my use.
It also has a gui
[1] https://github.com/jcupitt/libvips/wiki/Speed-and-memory-use
He shows the equivalent IM command lines, and it's 2 lines of text.
No issue with the more complex ones though...it's his work.
convert $infile \( $infile -blur 0x$width \) -compose minus +swap \ -composite -normalize $tmp0
composite -blend $mix%x100% $tmp0 $infile -matte $outfile
I now owe Fred something?So everyone that ever figures out how to do something neat with a free tool and documents it gets to claim the rights to that and ask for money?
Might not even be against this as an idea, but the premise seems shaky to me, I guess
Maybe more to the point is- if you want to ask for money for doing work like this, don't publish the ImageMagick command equivalents? Though I guess that would be hard to avoid other than putting it in some proprietary UI/app or something. Oh well.
To put it bluntly: pay the dude for the effort.