Giter VIP home page Giter VIP logo

pconvert's Introduction

Simple PNG conversion tool using libpng.

Build

It should be simple to build the project using make. Please note that the project requires both Python and libpng.

make
make install

To build pconvert for a specific system use the SYS Makefile variable:

make SYS=darwin

It's also possible to build the Python extension and install in a local machine.

python setup.py install

Python Methods

blend_images

Argument Type Mandatory Default Description
bottom_path str true - The path to the bottom image.
top_path str true - The path to the top image.
target_path str true - The path of the target (resulting) image.
algorithm str false multiplicative The blending algorithm to be used.
is_inline bool false false If the inline methods should be used to perform the blending.

blend_multiple

Argument Type Mandatory Default Description
paths list true - The sequence of paths of the images to be blended from bottom to top.
target_path str true - The path of the target (resulting) image.
algorithm str false multiplicative The blending algorithm to be used to blend all images in a pair-wise fashion.
algorithms list false - The sequence of blending algorithms to use for each blending operation. If defined, algorithm will not be used.
is_inline bool false false If the inline methods should be used to perform the blending.

Example

Running a simple set of composition can be done using:

pconvert compose assets/demo/

To be able to convert one image into a normalized PNG format use the convert command as following:

pconvert convert assets/demo/tux.png tux.out.png

To run a simple benchmark operation (results in benchmark.txt) using pconvert use:

pconvert benchmark assets/demo/

Conan

This package makes use of the Conan (version 1.x) package manager to use run:

pip install --upgrade "conan<2"
conan install . --build missing

It's important to note that the usage of Conan is not mandatory and it's still possible to build P(NG)Convert without it.

CMake

Linux & MacOS

conan install . --build missing
cmake .
make

Windows

conan install . --build missing
cmake . -DCMAKE_CL_64=1 -DCMAKE_GENERATOR_PLATFORM=x64 -Ax64
msbuild ALL_BUILD.vcxproj /P:Configuration=Release

License

PConvert is currently licensed under the Apache License, Version 2.0.

Build Automation

Build Status Build Status GitHub Coverage Status PyPi Status

pconvert's People

Contributors

joamag avatar joao-conde avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

hugo-gomes

pconvert's Issues

Add bottom and top image dimensions check to blend entry points

@joamag

Description

PConvert works for images of the same dimensions (width and height). However, blending images with different dimensions should return an error and not segfault. This causes issues for clients of the API (whether in Python or in C) where the program just segfaults.

The blend_images function should make a simple verification to the bottom and top images dimensions and check if they are equal. If not, we can return with an exit code. Notice that it already returns an ERROR_T (just an int) but it is always the NORMAL one unless it segfaults.

When images do not have the same size, this pointer arithmetic is guaranteed to SEGFAULT:

Proposal

Add an images dimensions check to all blend entry points to avoid invalid pointer arithmetic.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.