User Tools

Site Tools



PhotoQt - no Crop listed…


(PS) is a computer language for creating vector graphics. It is a dynamically typed, concatenative programming language and was created by John Warnock, Charles Geschke, Doug Brotz, Ed Taft and Bill Paxton in 1982. It is used as a page description language in the electronic and desktop publishing areas.

XnViewMP - a nice browser-y image viewer.

  • Ctrl+mouse-left-down+drag to Crop.
  • Image > Adjust > Shadow/Highlight… then push up Highlight to 100 to remove paper-shadows.



an open source alternative to the OpenGL Utility Toolkit (GLUT) library. GLUT (and hence FreeGLUT) allows the user to create and manage windows containing OpenGL contexts on a wide range of platforms and also read the mouse, keyboard and joystick functions. FreeGLUT is intended to be a full replacement for GLUT, and has only a few differences.
Since GLUT has gone into stagnation, FreeGLUT is in development to improve the toolkit. It is released under the MIT License.


a cross-language, multi-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.

OpenGL Programming

OpenGL is an API used for drawing 3D graphics. OpenGL is not a programming language; an OpenGL application is typically written in C or C++. What OpenGL does allow you to do is draw attractive, realistic 3D graphics with minimal effort. The API is typically used to interact with a GPU, to achieve hardware-accelerated rendering.

Color image pipeline

Gamma correction is explained superbly by Cambridge in Colour.

YUV > Y' stands for the luma component (the brightness) and U and V are the chrominance (color) components; luminance is denoted by Y and luma by Y' – the prime symbols (') denote gamma compression, with “luminance” meaning perceptual (color science) brightness, while “luma” is electronic (voltage of display) brightness.

Y'UV was invented when engineers wanted color television in a black-and-white infrastructure. They needed a signal transmission method that was compatible with black-and-white (B&W) TV while being able to add color. The luma component already existed as the black and white signal; they added the UV signal to this as a solution.



tesseract-ocr-setup-3.02.02.exe adds C:\Program Files\Tesseract-OCR; into the Path, such that I can tesseract textscan.jpg out which gets me out.txt (and silently over-writes if it's already there).

Image file formats


JPEG Myths and Facts

The most common filename extensions for files employing JPEG compression are .jpg and .jpeg, though .jpe, .jfif and .jif are also used. It is also possible for JPEG data to be embedded in other file types – TIFF encoded files often embed a JPEG image as a thumbnail of the main image; and MP3 files can contain a JPEG of cover art, in the ID3v2 tag.


at Wikipedia

Portable Network Graphics was created as an improved, non-patented replacement for GIF.
when storing images that contain text, line art, or graphics – images with sharp transitions and large areas of solid color – the PNG format can compress image data more than JPEG can.


Exchangeable image file format.

Orientation (rotation) has 8 possible values

Jeffrey Friedl's Online Viewer

Exif Orientation Tag

I found that I'm in agreement with Dave Perrett. For me, the orientation tag was causing unpredictable rotations as I moved images around different systems and software, so I looked for a way to identify the tag, and then to clear or reset it to a harmless state.

A quick visual explanation.

Phil Harvey's ExifTool


  • exiftool imagefile reports the tags.
  • Get the photo's date (very fast): exiftool * |egrep 'File Name| Original'
  • exiftool *.jpg|egrep 'File Name| Resolution' - lists jpgs and their X & Y Resolutions.

the Orientation tag

Search for Orientation at Phil Harvey's EXIF Tags page. You'll see (under tag 0x0112):

1 = Horizontal (normal)
2 = Mirror horizontal
3 = Rotate 180
4 = Mirror vertical
5 = Mirror horizontal and rotate 270 CW
6 = Rotate 90 CW
7 = Mirror horizontal and rotate 90 CW
8 = Rotate 270 CW


exiftool -filename="1-72dpi.JPG" -xresolution=72 -yresolution=72 1.JPG extracts just the Stand-Alone Executable: exiftool(-k).exe. Just drag and drop an image file, or several, onto it. The file(s) don't move, but instead a console window pops up, and fills up with all the exif info found - which is usually a lot. Alternatively, work from the MSWin Console, like this:

exiftool -Orientation *

- to see the Orientation tag settings for all files in the current folder.


Rename the Windows executable to exiftool(-k -Orientation).exe and drag an image file onto it - you'll see only the value of the orientation tag displayed in the popped-up console. Something like:

Orientation: Rotate 90 CW

Rewrite Orientation to Horizontal:

  1. This is my preferred way to render the Orientation tag harmless. Then I manually rotate images, knowing that there's never going to be any further confusion as they're passed on to other viewing tools.
  2. Rename the executable thus: exiftool(-Orientation=Horizontal).exe
  3. Can drop a load of images onto it at one go.
  4. The image.type is renamed to image.type_original, and then a new image.type is written in the folder with its Orientation tag set to Horizontal. If all is okay (it always is) delete the originals.



Saving images

  • Selecting Quality 100% for a 450ishKB jpeg saved it at 1.4MB, which is why we don't do this.
  • XCF is the native image format. To get other formats you need to Export.

Adjust images

Scale is only accessible through Image → Scale Image.


Adding two or more images together is tricky, but you can merge, or put them side-by-side.

Filters → Map → Tile one image.


on Windows 10

Windows Binary Release :

  • file:///C:/Program%20Files/ImageMagick-7.0.2-Q16/index.html - the local version of the website
  • ImageMagick-6.8.9-3-Q16-x86-dll.exe is what I used on my old Windows 7 netbook. It added C:\Program Files\ImageMagick-6.8.9-Q16 into the Path, which brought in a version of ffmpeg.exe.
  • ImageMagick-7.0.2-2-Q16-x64-dll.exe installs on Windows 10 to C:\Program Files\ImageMagick-7.0.2-Q16


  • magick identify [-verbose] <image>

Powershell recursively convert all svg:

gci -r *.svg | %{ magick $_ $_'.png' }
gci -r *.svg | rm



Mogrify “in-place batch processing”.

  • mogrify -format jpg *.png - converts all pngs to jpgs, overwriting any existing!
  • mogrify -resize 1600 * - overwrites all images with 1600 width



Overlaying a transparent label onto an image:

composite -gravity southeast GRP23label.png b8q_Rehearsing.jpg b8q.jpg

- your label should be a PNG for this to work.


identify *

Get the date a photo was taken:

identify -verbose IMG_5247.JPG |grep DateTime:
exif:DateTime: 2015:05:27 17:26:59

And for all the photos in the current directory: identify -verbose * |grep “Image:\|DateTime:”


a Label with Soft Outline

I adapted Anthony Thyssen's example for my needs thusly (my photo-credit was 34 characters long):

convert -size 379x36 xc:none -font Segoe-Print -pointsize 20 -stroke black -strokewidth 8 -annotate +7+26 "here some text that's 34 char long" -blur 0x8 -fill goldenrod1 -stroke none -annotate +7+26 "here some text that's 34 char long" GRP23label.png

- this creates a pleasantly faded-in effect, and, saved in PNG, it can overlay transparently.

cross_platform/imagey.txt · Last modified: 2016/09/01 17:55 (external edit)