Skip to main content

A tiny digital photographic utility.

Project description

Anshitsu

Testing

codecov

A tiny digital photographic utility.

"Anshitsu" means a darkroom in Japanese.

Install

Run this command in an environment where Python 3.10 or higher is installed.

We have tested it on Windows, Mac, and Ubuntu on GitHub Actions, but we have not tested it on Macs with Apple Silicon, so please use it at your own risk on Macs with Apple Silicon.

pip install anshitsu

Usage

It is as described in the following help.

NAME
    main.py - Process Runnner for Command Line Interface


SYNOPSIS
    main.py <flags>

DESCRIPTION
    This utility converts the colors of images such as photos.

    If you specify a directory path, it will convert
    the image files in the specified directory.
    If you specify a file path, it will convert the specified file.
    If you specify an option, the specified conversion will be performed.


    Tosaka mode is a mode that expresses the preference of
    Tosaka-senpai, a character in "Kyūkyoku Chōjin R",
    for "photos taken with Tri-X that look like they were
    burned onto No. 4 or No. 5 photographic paper".
    Only use floating-point numbers when using this mode;
    numbers around 2.4 will make it look right.

FLAGS
    --path=PATH
        Type: Optional[Optional]
        Default: None
        Directory or File Path. Defaults to None.
    -k, --keep_alpha=KEEP_ALPHA
        Type: bool
        Default: False
    --colorautoadjust=COLORAUTOADJUST
        Type: bool
        Default: False
        Use colorautoadjust algorithm. Defaults to False.
    --colorstretch=COLORSTRETCH
        Type: bool
        Default: False
        Use colorstretch algorithm. Defaults to False.
    -g, --grayscale=GRAYSCALE
    -g, --grayscale=GRAYSCALE
        Type: bool
        Default: False
        Convert to grayscale. Defaults to False.
    -i, --invert=INVERT
        Type: bool
        Default: False
        Invert color. Defaults to False.
    --color=COLOR
        Type: Optional[Optional]
        Default: None
        Fix color balance. Defaults to None.
    -b, --brightness=BRIGHTNESS
        Type: Optional[Optional]
        Default: None
        Fix brightness. Defaults to None.
    --sharpness=SHARPNESS
        Type: Optional[Optional]
        Default: None
        Fix sharpness. Defaults to None.
    --contrast=CONTRAST
        Type: Optional[Optional]
        Default: None
        Fix contrast. Defaults to None.
    -t, --tosaka=TOSAKA
        Type: Optional[Optional]
        Default: None
        Convert to grayscale with fix contrast. Defaults to None.
        Convert to grayscale with fix contrast. Defaults to None.
    --outputrgb=OUTPUTRGB
        Type: bool
        Default: False
        Outputs a monochrome image in RGB. Defaults to False.
    --sepia=SEPIA
        Type: bool
        Default: False
        Convert to RGB colored by sepia. Defaults to False.
    --cyanotype=CYANOTYPE
        Type: bool
        Default: False
        Convert to RGB like cyanotype. Defaults to False.
    -n, --noise=NOISE
        Type: Optional[Optional]
        Default: None
        Add Gaussian noise. Defaults to None.
    --overwrite=OVERWRITE
        Type: bool
        Default: False
        Default: False
    --overwrite=OVERWRITE
        Type: Optional[Optional]
        Convert to RGB like cyanotype. Defaults to False.
        Convert to RGB colored by sepia. Defaults to False.
        Default: None
    -t, --tosaka=TOSAKA
        Default: None
        Default: None
    --path=PATH
    burned onto No. 4 or No. 5 photographic paper".
NAME
    main.py - Process Runnner for Command Line Interface
    main.py - Process Runnner for Command Line Interface

SYNOPSIS
SYNOPSIS
    main.py <flags>


DESCRIPTION
DESCRIPTION
    This utility converts the colors of images such as photos.

    If you specify a directory path, it will convert
    If you specify a directory path, it will convert
    the image files in the specified directory.
    the image files in the specified directory.
    If you specify a file path, it will convert the specified file.
    If you specify an option, the specified conversion will be performed.

NAME
    main.py - Process Runnner for Command Line Interface

SYNOPSIS
    main.py <flags>

DESCRIPTION
    This utility converts the colors of images such as photos.

    If you specify a directory path, it will convert
    the image files in the specified directory.
    If you specify a file path, it will convert the specified file.
    If you specify an option, the specified conversion will be performed.

    Tosaka mode is a mode that expresses the preference of
    Tosaka-senpai, a character in "Kyūkyoku Chōjin R",
    for "photos taken with Tri-X that look like they were
    burned onto No. 4 or No. 5 photographic paper".
    Only use floating-point numbers when using this mode;
    numbers around 2.4 will make it look right.

POSITIONAL ARGUMENTS
    PATH
        Type: str
        Directory or File Path

FLAGS
    --path=PATH
        Type: Optional[Optional]
        Default: None
        Directory or File Path. Defaults to None.
    -k, --keep_alpha=KEEP_ALPHA
        Type: bool
        Default: False
    --colorautoadjust=COLORAUTOADJUST
        Type: bool
        Default: False
        Use colorautoadjust algorithm. Defaults to False.
    --colorstretch=COLORSTRETCH
        Type: bool
        Default: False
        Use colorstretch algorithm. Defaults to False.
    -g, --grayscale=GRAYSCALE
        Type: bool
        Default: False
        Convert to grayscale. Defaults to False.
    -i, --invert=INVERT
        Type: bool
        Default: False
        Invert color. Defaults to False.
    --color=COLOR
        Type: Optional[Optional]
        Default: None
        Fix color balance. Defaults to None.
    -b, --brightness=BRIGHTNESS
        Type: Optional[Optional]
        Default: None
        Fix brightness. Defaults to None.
    --sharpness=SHARPNESS
        Type: Optional[Optional]
        Default: None
        Fix sharpness. Defaults to None.
    --contrast=CONTRAST
        Type: Optional[Optional]
        Default: None
        Fix contrast. Defaults to None.
    -t, --tosaka=TOSAKA
        Type: Optional[Optional]
        Default: None
        Convert to grayscale with fix contrast. Defaults to None.
    --outputrgb=OUTPUTRGB
        Type: bool
        Default: False
        Outputs a monochrome image in RGB. Defaults to False.
    --sepia=SEPIA
        Type: bool
        Default: False
        Convert to RGB colored by sepia. Defaults to False.
    --cyanotype=CYANOTYPE
        Type: bool
        Default: False
        Convert to RGB like cyanotype. Defaults to False.
    -n, --noise=NOISE
        Type: Optional[Optional]
        Default: None
        Add Gaussian noise. Defaults to None.
    --overwrite=OVERWRITE
        Type: bool
        Default: False
        Overwrite original files. Defaults to False.
    -v, --version=VERSION
        Type: bool
        Default: False
        Show version. Defaults to False.
    -l, --line_drawing=LINE_DRAWING
        Type: bool
        Default: False
        Convert to like line drawing. Defaults to False.
    --posterize=POSTERIZE
        Type: Optional[Optional]
        Default: None

If a directory is specified in the path, an out directory will be created in the specified directory, and the converted JPEG and PNG images will be stored in PNG format.

If you specify a JPEG or PNG image file as the path, an out directory will be created in the directory where the image is stored, and the converted image will be stored in PNG format.

Note: If you specify a file in any other format in the path, be aware there is no error handling. The program will terminate abnormally.

Algorithms

The following algorithms are available in this tool.

RGBA to RGB Convert

Converts an image that contains Alpha, such as RGBA, to image data that does not contain Alpha. Transparent areas will be filled with white.

This algorithm is performed on any image file.

invert

Inverts the colors of an image using Pillow's built-in algorithm.

In the case of negative film, color conversion that takes into account the film base color is not performed, but we plan to follow up with a feature to be developed in the future.

colorautoajust

We will use the "automatic color equalization" algorithm described in the following paper to apply color correction.

This process is more time consuming than the algorithm used in "colorstretch", but it can reproduce more natural colors.

(References)

A. Rizzi, C. Gatta and D. Marini, "A new algorithm for unsupervised global and local color correction.", Pattern Recognition Letters, vol. 24, no. 11, 2003.

colorstretch

The "gray world" and "stretch" algorithms described in the following paper are combined to apply color correction.

This process is faster than the algorithm used in "colorautoajust".

(References)

D. Nikitenko, M. Wirth and K. Trudel, "Applicability Of White-Balancing Algorithms to Restoring Faded Colour Slides: An Empirical Evaluation.", Journal of Multimedia, vol. 3, no. 5, 2008.

grayscale

Convert a color image to grayscale using the algorithm described in the following article.

Python でグレースケール(grayscale)化

Note: This article is written in Japanese.

Tosaka mode

Tosaka mode is a mode that expresses the preference of Tosaka-senpai, a character in "Kyūkyoku Chōjin R", for "photos taken with Tri-X that look like they were burned onto No. 4 or No. 5 photographic paper".

Only use floating-point numbers when using this mode; numbers around 2.4 will make it look right.

When this mode is specified, color images will also be converted to grayscale.

outputrgb

Outputs a monochrome image in RGB.

noise

Add Gaussian noise.

To add noise, you need to specify a floating-point number; a value of about 10.0 will be just right.

Special Thanks

We are using the following libraries.

shunsukeaihara/colorcorrect

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anshitsu-2.1.1.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

anshitsu-2.1.1-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file anshitsu-2.1.1.tar.gz.

File metadata

  • Download URL: anshitsu-2.1.1.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.0 Darwin/24.5.0

File hashes

Hashes for anshitsu-2.1.1.tar.gz
Algorithm Hash digest
SHA256 6c4ff041f200f10348e89ce8a4065f3bf8f036abadaa8ac60d98530a5ceef647
MD5 b8baf1744bf911986a88cf521a7c0775
BLAKE2b-256 31811fe4131147e94fd0150ca25c0d6e99af5890bdc360d120ba9086693ff615

See more details on using hashes here.

File details

Details for the file anshitsu-2.1.1-py3-none-any.whl.

File metadata

  • Download URL: anshitsu-2.1.1-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.0 Darwin/24.5.0

File hashes

Hashes for anshitsu-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7535660ecfb7d33c0a83602c297db26a21be935e09d70de139b941fb86ff7b01
MD5 f404b40ec12b0511c292ce942981c416
BLAKE2b-256 728fb5a1e9f950056eaeb8f54626b580f364ea31e2e42e9bb0d6506692db704e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page