Django helper application to easily and non-destructively crop arbitrarily large images in admin and frontend.

Overview

django-image-cropping

Build Status PyPI - Django Version

django-image-cropping is an app for cropping uploaded images via Django's admin backend using Jcrop.

Screenshot:

Screenshot of the cropping

django-image-cropping is perfect when you need images with a specific size for your templates but want your users or editors to upload images of any dimension. It presents a selection with a fixed aspect ratio so your users can't break the layout with oddly-sized images.

The original images are kept intact and only get cropped when they are displayed. Large images are presented in a small format, so even very big images can easily be cropped.

The necessary fields, widgets and a template tag for displaying the cropped image in your templates are provided.

Also works with FeinCMS content types!

Installation

  1. Install django-image-cropping using pip:

    pip install django-image-cropping
    

By default django-image-cropping ships with an easy-thumbnails-backend which requires easy-thumbnails to also be installed and added to the INSTALLED_APPS.

The easy-thumbnails backend requires that you adjust the thumbnail processors in your settings:

INSTALLED_APPS = [
    ...
    'easy_thumbnails',
    'image_cropping',
]

from easy_thumbnails.conf import Settings as thumbnail_settings
THUMBNAIL_PROCESSORS = (
    'image_cropping.thumbnail_processors.crop_corners',
) + thumbnail_settings.THUMBNAIL_PROCESSORS

Configuration

Add an ImageRatioField to the model that contains the ImageField for the images you want to crop.

The ImageRatioField simply stores the boundaries of the cropped image. It expects the name of the associated ImageField and the desired size of the cropped image as arguments.

The size is passed in as a string and defines the aspect ratio of the selection as well as the minimum size for the final image:

from django.db import models
from image_cropping import ImageRatioField

class MyModel(models.Model):
    image = models.ImageField(blank=True, upload_to='uploaded_images')
    # size is "width x height"
    cropping = ImageRatioField('image', '430x360')

You can configure a size warning if users try to crop a selection smaller than the defined minimum.

Admin Integration

Add the ImageCroppingMixin to your ModelAdmin:

from django.contrib import admin
from image_cropping import ImageCroppingMixin

class MyModelAdmin(ImageCroppingMixin, admin.ModelAdmin):
    pass

admin.site.register(MyModel, MyModelAdmin)

If your setup is correct you should now see the enhanced image widget that provides a selection area.

Backends

django-image-cropping delegates the cropped image generation to a backend.

A backend based on easy-thumbnails is provided, but it's possible to use a custom backend. The IMAGE_CROPPING_BACKEND setting expects a dotted path to a class that implements the required methods. You can omit this setting if you want to use the default backend.

In case you use a custom backend you can provide an optional dict that will be used to populate the backend's constructor params.

Default settings:

IMAGE_CROPPING_BACKEND = 'image_cropping.backends.easy_thumbs.EasyThumbnailsBackend'
IMAGE_CROPPING_BACKEND_PARAMS = {}

Frontend

django-image-cropping provides a templatetag for displaying a cropped thumbnail. Any other processor parameter (like bw=True or upscale=True) will be forwarded to the backend:

{% cropped_thumbnail yourmodelinstance "ratiofieldname" [scale=INT|width=INT|height=INT|max_size="INTxINT"] %}

Example usage:

{% load cropping %}
<img src="{% cropped_thumbnail yourmodel "cropping" scale=0.5 %}">

Or generate the URL from Python code in your view:

from image_cropping.utils import get_backend
thumbnail_url = get_backend().get_thumbnail_url(
    yourmodel.image,
    {
        'size': (430, 360),
        'box': yourmodel.cropping,
        'crop': True,
        'detail': True,
    }
)

easy_thumbnails

You can also use the standard easy-thumbnails templatetag with the box parameter:

{% load thumbnail %}
{% thumbnail yourmodel.image 430x360 box=yourmodel.cropping crop detail %}

Or generate the URL from Python code in your view:

from easy_thumbnails.files import get_thumbnailer
thumbnail_url = get_thumbnailer(yourmodel.image).get_thumbnail({
    'size': (430, 360),
    'box': yourmodel.cropping,
    'crop': True,
    'detail': True,
}).url

ModelForm

If you want to use the cropping widget outside the admin, you'll need to define the ImageField as an ImageCropField:

from django.db import models
from image_cropping import ImageCropField, ImageRatioField

class MyModel(models.Model):
    image = ImageCropField(blank=True, upload_to='uploaded_images')
    # size is "width x height"
    cropping = ImageRatioField('image', '430x360')

Alternatively, override the widget in your ModelForm (you just need to do one of these two, not both!):

from django import forms
from image_cropping import ImageCropWidget

class MyModelForm(forms.ModelForm):
    class Meta:
        widgets = {
            'image': ImageCropWidget,
        }

Remember to include the form media in the <head> of your HTML:

<html>
  <head>
    {{ form.media }}
  </head>
  <body>
    {{ form }}
  </body>
</html>

The cropping itself happens in the ImageRatioField, the ImageCropField will still behave like a regular ImageField.

If you're selectively including or excluding fields from the ModelForm, remember to include the ImageRatioField.

Multiple formats

If you need the same image in multiple formats, simply specify another ImageRatioField. This will allow the image to be cropped twice:

from image_cropping import ImageRatioField, ImageCropField

image = ImageCropField(blank=True, upload_to='uploaded_images')
# size is "width x height"
list_page_cropping = ImageRatioField('image', '200x100')
detail_page_cropping = ImageRatioField('image', '430x360')

In your templates, use the corresponding ratio field:

{% load cropping %}
{% cropped_thumbnail yourmodel "list_page_cropping" %}

Foreign Keys

If you need to crop an image contained within another model, referenced by a ForeignKey, the ImageRatioField is composed of the ForeignKey name, a double underscore, and the ImageField name:

from django.db import models
from image_cropping.fields import ImageRatioField

class Image(models.Model):
    image_field = models.ImageField(upload_to='image/')

class NewsItem(models.Model):
    title = models.CharField(max_length=255)
    image = models.ForeignKey(Image)
    cropping = ImageRatioField('image__image_field', '120x100')

Cropping foreign keys only works in the admin for now, as it reuses the raw_id widget.

Free cropping

If you do not need a fixed ratio, you can disable this constraint by setting free_crop to True. In this case the size parameter is the desired minimum and is also used for the size-warning:

from image_cropping import ImageRatioField, ImageCropField

image = ImageCropField(blank=True, upload_to='uploaded_images')

# size is "width x height" so a minimum size of 200px x 100px would look like this:
min_free_cropping = ImageRatioField('image', '200x100', free_crop=True)

Use the max_size parameter of the templatetag if you want to limit the display size of a thumbnail:

<img src="{% cropped_thumbnail image "cropping_free" max_size="200x200" %}" />

Disabling cropping

If you want cropping to be optional, use allow_fullsize=True as an additional keyword argument for your ImageRatioField.

Editors can now switch off cropping by unchecking a checkbox next to the image cropping widget:

image_with_optional_cropping = ImageRatioField('image', '200x100', allow_fullsize=True)

Settings

Thumbnail size

You can define the maximum size of the admin preview thumbnail in your settings:

# size is "width x height"
IMAGE_CROPPING_THUMB_SIZE = (300, 300)

Size warning

You can warn users about crop selections that are smaller than the size defined in the ImageRatioField. When users try to do a smaller selection, a red border appears around the image.

To use this functionality for a single image add the size_warning parameter to the ImageRatioField:

cropping = ImageRatioField('image', '430x360', size_warning=True)

You can enable this functionality project-wide by adding the following line to your settings:

IMAGE_CROPPING_SIZE_WARNING = True

Custom jQuery

By default the image cropping widget embeds a recent version of jQuery.

You can point to another version using the IMAGE_CROPPING_JQUERY_URL setting, though compatibility issues may arise if your jQuery version differs from the one that is tested against.

You can also set IMAGE_CROPPING_JQUERY_URL to None to disable inclusion of jQuery by the widget. You are now responsible for including jQuery yourself, both in the frontend and in the admin interface.

Custom backend

You can define a custom backend:

IMAGE_CROPPING_BACKEND = 'image_cropping.backends.easy_thumbs.EasyThumbnailsBackend'

You can provide an optional dict that will be used to populate the backend's constructor:

IMAGE_CROPPING_BACKEND_PARAMS = {'version_suffix': 'thumb'}

See the built-in backends on Backends.

Troubleshooting

The cropping widget is not displayed when using a ForeignKey.
Make sure you do not add the corresponding image field to raw_id_fields.

Changelog

1.6.1

  • Add default setting for jquery url to app conf

1.6

  • Add support for Django 3.2
  • Add support for Python 3.9

1.5

  • Drop support for Python 3.5 (although it should still work)
  • Add support for Django 3.1
  • Minified JS and reduce potential for incompatibility with other django libraries (See #148)
  • Fix formfield_for_dbfield signature (#134)
  • Fix CSS property word separator (#131)
  • Enforce isort in tests

1.4

  • Removed more old code
  • Move testing and packaging to GitHub Actions

1.3

  • Add support for Django 3.0
  • Drop support for Python < 3.5
  • Drop support for Django < 2.2

1.2

  • Add support for Django 2.1

1.1

  • Make django-image-cropping compatible with Django 1.11

1.0.4

  • Move and encapsulate the logic for creating cropped thumbnails to a swappable backend. (@fgmacedo in #92)

1.0

"If your software is being used in production, it should probably already be 1.0.0." (http://semver.org)

0.9

This release addresses mainly the test coverage and internal stuff.

Noteable (breaking) changes and things to be considered when upgrading from an older version:

  • django-appconf is now used for handling defaults and settings.
    • Breaking Change: JQUERY_URL changed to IMAGE_CROPPING_JQUERY_URL as part of this transition.
  • The cropped_thumbnail tag is now based on Django's simple tag.
    • Breaking Change: Arguments for the the tag now need to be put in quotes.
    • If you are still using Django 1.4 remember that you can't easily use True or False as template tag arguments.
  • Any processor parameter (like bw=True or upscale=True) can be used in the cropped_thumbnail tag.
  • Moved inline css to a dedicated image_cropping.css style sheet

0.8

  • Minimum requirements changed to Django 1.4 and easy-thumbnails 1.4
  • Added Python 3 compatibility. Python 2.6 is now the minimum required Python version.
  • Added a free cropping option, so cropping is no longer restricted to fixed ratios.
  • Removed the deprecated CropForeignKey field.

0.7

  • Made the widget for the ImageCropField overwritable to allow custom widgets. (Remember to use the ImageCroppingMixin in the admin as the image cropping widgets are no longer implicitly set.)
  • Updated Jcrop and jQuery dependencies.
  • Moved docs to Read the Docs: https://django-image-cropping.readthedocs.org
Comments
  • Cropping always hidden in admin

    Cropping always hidden in admin

    Hi,

    Even when I start your example application I don't see cropping field in admin edit page (display: none in HTML). I tried to understand .js code and think, that it happens here: // skip this image if it's empty and hide the whole field, within admin and by itself if (!$image_input.length || $image_input.data('thumbnail-url') === undefined) { $this.hide().parents('div.form-row:first').hide(); return; } In my last project all worked fine but now it doesn't. Can you help me?

    opened by tereshkin 16
  • Template Tag Options are being Ignored

    Template Tag Options are being Ignored

    I'm using the template tags to show and modify the different images, but none of the options (width, height, scale, max_size) seem to work:

    {% load cropping %} < img src="{% cropped_thumbnail entry 'thumb_profile' width=200 %}" >

    The physical image file with the correct size specs in the file name is being created, but the real image size is always the same.

    I'm using: Django==1.6.1 easy-thumbnails==1.4 django-image-cropping==0.8

    Any hints? Is this a bug?

    opened by Merenon 14
  • ImageCropWidget does not work outside of the admin

    ImageCropWidget does not work outside of the admin

    Hi guys, I couldn't find a ticket to this issue so I hope it's not a duplicate. Even if I explicitly assign the ImageCropWidget for my image form field, the image cropping widget isn't used outside of the admin. Instead a regular ClearableFileInput is rendered.

    I'm using django crispy forms, but I also tried to render the field without the form-helper and had the same problem. It looks like that there is a problem with loading the jQuery/js.

    There is a thread in the django user group, so I'm not the only one having the problem: https://groups.google.com/forum/#!topic/django-users/U6c-DysbGS4

    Let me know if you need any additional information. Cheers!

    opened by tiwei 13
  • "Django Image Cropping" and "Django Autocomplete Light" are conflicting in the admin interface.

    Synopsis

    If I use "Django Image Cropping" and "Django Autocomplete Light" in the admin interface, image cropping is not working. This is probably due to some jquery issues.

    Before the upgrade

    It worked in the past, when I used:

    • django==1.11.26
    • django-autocomplete-light==3.2.10
    • django-image-cropping==1.1.0

    After the upgrade

    I am not 100% sure, but I think it stopped working after the upgrade.

    • django==2.2.8
    • django-autocomplete-light==3.4.1
    • django-image-cropping==1.2.0

    “Jcrop is not a function”

    This is the error message:

    Bildschirmfoto vom 2019-12-13 12-19-01

    So I guess it has to do something with Jcrop (a jquery plugin?) not getting loaded properly.

    opened by mogoh 11
  • Django 4.x Support

    Django 4.x Support

    This PR fixes #173 and updates to Django 4.0.

    Things that have been changed:

    • Requirements updated to latest
    • ugettext (replaced by gettext)
    • url (replaced by re_path)
    • USE_TZ (was set to False as the default values has been changes to True in D4.0. False keeps the <4.0 behaviour.)

    I've added a new tox env from Django 4.0 with Python 3.8 + 3.9 as previous versions are not supported anymore.

    tox reports:

    ERROR:  py36-django22: InterpreterNotFound: python3.6
    ERROR:  py37-django22: InterpreterNotFound: python3.7
      py38-django22: commands succeeded
    ERROR:   py39-django22: could not install deps [pillow==6.2.2, -r/Users/janwedel/Development/repos/django-image-cropping/example/requirements.txt, Django>=2.2,<3.0]; v = InvocationError("/Users/janwedel/Development/repos/django-image-cropping/.tox/py39-django22/bin/python -m pip install pillow==6.2.2 -r/Users/janwedel/Development/repos/django-image-cropping/example/requirements.txt 'Django>=2.2,<3.0'", 1)
    ERROR:  py36-django30: InterpreterNotFound: python3.6
    ERROR:  py37-django30: InterpreterNotFound: python3.7
      py38-django30: commands succeeded
    ERROR:   py39-django30: could not install deps [pillow==6.2.2, -r/Users/janwedel/Development/repos/django-image-cropping/example/requirements.txt, Django>=3.0,<3.1]; v = InvocationError("/Users/janwedel/Development/repos/django-image-cropping/.tox/py39-django30/bin/python -m pip install pillow==6.2.2 -r/Users/janwedel/Development/repos/django-image-cropping/example/requirements.txt 'Django>=3.0,<3.1'", 1)
    ERROR:  py36-django31: InterpreterNotFound: python3.6
    ERROR:  py37-django31: InterpreterNotFound: python3.7
      py38-django31: commands succeeded
    ERROR:   py39-django31: could not install deps [pillow==6.2.2, -r/Users/janwedel/Development/repos/django-image-cropping/example/requirements.txt, Django>=3.1,<3.2]; v = InvocationError("/Users/janwedel/Development/repos/django-image-cropping/.tox/py39-django31/bin/python -m pip install pillow==6.2.2 -r/Users/janwedel/Development/repos/django-image-cropping/example/requirements.txt 'Django>=3.1,<3.2'", 1)
    ERROR:  py36-django32: InterpreterNotFound: python3.6
    ERROR:  py37-django32: InterpreterNotFound: python3.7
      py38-django32: commands succeeded
    ERROR:   py39-django32: could not install deps [pillow==6.2.2, -r/Users/janwedel/Development/repos/django-image-cropping/example/requirements.txt, Django>=3.2,<4]; v = InvocationError("/Users/janwedel/Development/repos/django-image-cropping/.tox/py39-django32/bin/python -m pip install pillow==6.2.2 -r/Users/janwedel/Development/repos/django-image-cropping/example/requirements.txt 'Django>=3.2,<4'", 1)
      py38-django40: commands succeeded
    ERROR:   py39-django40: could not install deps [pillow==6.2.2, -r/Users/janwedel/Development/repos/django-image-cropping/example/requirements.txt, Django>=4.0,<4.1]; v = InvocationError("/Users/janwedel/Development/repos/django-image-cropping/.tox/py39-django40/bin/python -m pip install pillow==6.2.2 -r/Users/janwedel/Development/repos/django-image-cropping/example/requirements.txt 'Django>=4.0,<4.1'", 1)
    

    I don't have all python versions installed, but surprisingly, the tests actually work even on Django 2.2. Didn't expect that.

    I also change the purest config as it was pointing to a non existing tests directory. Not sure if this was intentional or not.

    opened by jwedel 10
  • BUG: jQuery loss (can't use jQuery after import image_cropping.js)

    BUG: jQuery loss (can't use jQuery after import image_cropping.js)

    Can't use jQuery after: "jQuery.noConflict(true)(function() {image_cropping.init();}); " in: https://github.com/jonasundderwolf/django-image-cropping/blob/master/image_cropping/static/image_cropping/image_cropping.js

    opened by FedeG 10
  • Fix admin widget in django 3.0

    Fix admin widget in django 3.0

    This is a small patch in order to allow using the admin widget with django 3.0. The intention was to change as little as possible while keeping backward compatibility.

    opened by saemideluxe 8
  • Don't load jQuery if IMAGE_CROPPING_JQUERY_URL is set None or

    Don't load jQuery if IMAGE_CROPPING_JQUERY_URL is set None or "" or "None"

    Many users get confused and put IMAGE_CROPPING_JQUERY_URL = None in their python settings and since this is translated to javascript null and since null != "None" then the script assume its loading different version of jQuery and call noConflict(true). This fix address this problem

    opened by ramast 8
  • getting thumbnail image on python code

    getting thumbnail image on python code

    The documentation only shows how to get a thumbnail image on django template.

    I'm trying to display the thumbnails in admin list_display. Is it possible to return the thumbnail image path in python code using the image and cropping fields?

    Thank you

    opened by ghost 8
  • DJANGO_SETTINGS_MODULE is undefined

    DJANGO_SETTINGS_MODULE is undefined

    I can't manage to get django-image-cropping to run. After installation and configuration of my settings.py file, I'm getting the following error:

    ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

    opened by Gwildor 7
  • Extending the FileBrowser backend to add support for ImageField

    Extending the FileBrowser backend to add support for ImageField

    The current file-browser backend only has support for the FileBrowserField. This PR enables the use of FileBrowser as backend with regular ImageFeld fields.

    PS: The file-browser was published on pypi with the changes to add django-image-cropping support.

    opened by fgmacedo 6
  • Crop area is not recorded on object creation in Django Admin for Proxy models

    Crop area is not recorded on object creation in Django Admin for Proxy models

    Hi!

    I've noticed that if you create a proxy model that has an ImageField and an ImageRatio field, the crop field's value is not set upon saving for the first time. For non-proxy models, the crop field's value is set.

    I've confirmed that if the object has already been created, then the image is added, the crop value is set upon save.

    Django version tested: 3.2.16 Python version tested: 3.10 django-image-cropping version tested: 1.7

    I've set up https://github.com/agsimmons/django-image-cropping-proxy-bug to demonstrate the bug

    Steps to reproduce with the above repository

    1. Clone repository
    2. Create virtual environment
    3. Install packages in requirements.txt
    4. Apply migrations
    5. Create superuser account
    6. Run the development server
    7. Log in to admin interface at 127.0.0.1:8000/admin/
    8. Create an example model instance. Provide a name and image. Press Save.
    9. Observe in the list view that the Image Cropping field has a value set.
    10. Create an example proxy model instance. Provide a name and image. Press Save.
    11. Observe in the list view that the Image Cropping field does not have a value set.
    12. Select the proxy model instance that you just created. Press Save.
    13. Observe in the list view that the Image Cropping field now has a value set.
    opened by agsimmons 0
  • Widget not showing on admin side

    Widget not showing on admin side

    same issue as here: https://stackoverflow.com/questions/30254734/django-image-cropping-not-working-in-admin-interface

    Using Django 4.0.5, django-jazzmin

    Python 3.8

    opened by Zeyu-Li 0
  • Doesn't allow me to crop until after I've already added a record

    Doesn't allow me to crop until after I've already added a record

    As you can see from the screenshot, in the admin area, it doesn't let me crop until after i click add, before that, it doesn't show anything.

    image

    Is there a way round this, as otherwise the flow isn't quite great.

    opened by adambirds 0
  • Bump minimist from 1.2.5 to 1.2.6

    Bump minimist from 1.2.5 to 1.2.6

    Bumps minimist from 1.2.5 to 1.2.6.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Image Cropping from URL

    Image Cropping from URL

    Hi, recently I happen to use this project, but my requirement was different, that I had Image URL on S3 so, I needed to crop them, so what I did is I add a ImageURLField that will download the image save it temporarily. and the will return the cropped image. That's what my approach is, and I made it work to show me the Image on the front end. But I do not know will it be able to transfer the cropped image over the network. As I just do not need to save the cropped the image. Just need to save the coordinates so that it can be sent as it is saved by the admin.

    Missing Cloud Support 
    opened by foragerDev 2
  • Cropping Not working when integrating my App to Azure Blob Storage

    Cropping Not working when integrating my App to Azure Blob Storage

    Good Afternoon

    I was looking at moving my file storage to an azure blob storage. However am encountering issues with cropping images when they are uploaded in the Blob storage as per the below example

    image

    Any idea on if I'm doing something wrong or else this feature does not work with Azure Blob Storage?

    Thanks

    Missing Cloud Support 
    opened by szpm102 1
Releases(v1.7)
Owner
Jonas und der Wolf GmbH
Jonas und der Wolf GmbH
Python QR Code image generator

Pure python QR Code generator Generate QR codes. For a standard install (which will include pillow for generating images), run: pip install qrcode[pil

Lincoln Loop 3.5k Dec 31, 2022
Kimimaro: Skeletonize Densely Labeled Images

Kimimaro: Skeletonize Densely Labeled Images # Produce SWC files from volumetric images. kimimaro forge labels.npy --progress # writes to ./kimimaro_o

92 Dec 17, 2022
Simple mathematical operations on image, point and surface layers.

napari-math This package provides a GUI interfrace for simple mathematical operations on image, point and surface layers. addition subtraction multipl

Zach Marin 2 Jan 18, 2022
Simple AI app that is guessing color of apple in picture

Apple Color Determinant Application that is guessing color of apple from image Install Pillow, sklearn and numpy, using command for your package manag

Gleb Nikitin 1 Oct 25, 2021
Simple Python image processing & automatization project for a simple web based game

What is this? Simple Python image processing & automatization project for a simple web based game Made using only Github Copilot (except the color and

SGeri 2 Aug 15, 2022
Unique image & metadata generation using weighted layer collections.

nft-generator-py nft-generator-py is a python based NFT generator which programatically generates unique images using weighted layer files. The progra

Jonathan Becker 243 Dec 31, 2022
missing-pixel-filler is a python package that, given images that may contain missing data regions (like satellite imagery with swath gaps), returns these images with the regions filled.

Missing Pixel Filler This is the official code repository for the Missing Pixel Filler by SpaceML. missing-pixel-filler is a python package that, give

SpaceML 11 Jul 19, 2022
A simple image to text converter with GUI!

TEXTEMAGE! Textemage is a quick tool that extracts text from images, it is a Python based GUI program(also available in executable version). This is a

Akascape 5 Oct 26, 2022
GTK and Python based, simple multiple image editor tool

System Monitoring Center GTK3 and Python3 based, simple multiple image editor tool. Note: Development of this application is not completed yet. The ap

Hakan Dündar 1 Feb 02, 2022
A python based library to help you create unique generative images based on Rarity for your next NFT Project

Generative-NFT Generate Unique Images based on Rarity A python based library to help you create unique generative images based on Rarity for your next

Kartikay Bhutani 8 Sep 21, 2022
clesperanto is a graphical user interface for GPU-accelerated image processing.

clesperanto is a graphical user interface for a multi-platform multi-language framework for GPU-accelerated image processing. It is based on napari and the pyclesperanto-prototype.

1 Jan 02, 2022
Create a static HTML/CSS image gallery from a bunch of images.

gallerize Create a static HTML/CSS image gallery from a bunch of images.

Jochen Kupperschmidt 19 Aug 21, 2022
粉專/IG圖文加工器

粉專/IG圖文加工器 介紹 給PS智障(ex:我)使用,用於產生圖文 腳本省去每次重複步驟 可載入圖片(方形,請先處理過,歡迎PR) 圖片簡易套用濾鏡 可將圖片切片 要求 Python 版本 3.9 安裝 安裝最新 python pip3 install -r requirement.txt 效果

Louis Tang 7 Aug 10, 2022
Simple to use image handler for python sqlite3.

SQLite Image Handler Simple to use image handler for python sqlite3. Functions Function Name Parameters Returns init databasePath : str tableName : st

Mustafa Ozan Çetin 7 Sep 16, 2022
An API which would colorize a black and white image

Image Colorization API Machine Learning Model used- https://github.com/richzhang/colorization/tree/caffe Paper - https://arxiv.org/abs/1603.08511 Step

Neelesh Ranjan Jha 4 Nov 23, 2021
Fast Image Retrieval (FIRe) is an open source image retrieval project

Fast Image Retrieval (FIRe) is an open source image retrieval project release by Center of Image and Signal Processing Lab (CISiP Lab), Universiti Malaya. This project implements most of the major bi

CISiP Lab 39 Nov 25, 2022
API to help generating QR-code for ZATCA's e-invoice known as Fatoora with any programming language

You can try it @ api-fatoora api-fatoora API to help generating QR-code for ZATCA's e-invoice known as Fatoora with any programming language Disclaime

نافع الهلالي 12 Oct 05, 2022
A minimal, standalone viewer for 3D animations stored as stop-motion sequences of individual .obj mesh files.

ObjSequenceViewer V0.5 A minimal, standalone viewer for 3D animations stored as stop-motion sequences of individual .obj mesh files. Installation: pip

csmailis 2 Aug 04, 2022
The following program is used to swap the faces from two images.

Face-Swapping The following program is used to swap the faces from two images. In today's world deep fake technology has become really popular . As a

1 Jan 19, 2022
Turtle graphics || Python

turtle Turtle graphics || Python Rainbow (রংধনু) : Rainbow.using.Python.--.Python.Turtle.graphics.mp4 Human robot (মানব রোবট) : Draw.a.human.robot.usi

Jubair Ahmed Junjun 1 Oct 08, 2021