Silicon is an alternative to Carbon implemented in Rust.

Overview

Silicon

Crates.io Documentation CI License

Silicon is an alternative to Carbon implemented in Rust.

It can render your source code into a beautiful image.

Why Silicon

Carbon is a wonderful tool to create a beautiful image of your source code.

But it is a web application, which brings the following disadvantages:

  • Cannot work without Internet & browser.
  • Doesn't work well with shell. (Although there is carbon-now-cli, its experience is not very good, especially when the network is not so good.)

However, Silicon doesn't have these problems. It's is implemented in Rust and can work without browser & Internet.

Silicon can render your source code on the fly while carbon-now-cli takes several seconds on it.

Disadvantages

It's not as beautiful as Carbon...

Install

Cargo

cargo install silicon

AUR

Silicon is available on AUR (Thanks to @radmen).

You can install it with any AUR helpers you like.

eg.

pikaur -S silicon

Homebrew

You can install Silicon using Homebrew:

brew install silicon

Dependencies

Ubuntu

sudo apt install expat
sudo apt install libxml2-dev
sudo apt install pkg-config libasound2-dev libssl-dev cmake libfreetype6-dev libexpat1-dev libxcb-composite0-dev

Fedora

sudo dnf install cmake expat-devel libxcb-devel freetype-devel libxml2-devel

Arch Linux

sudo pacman -S --needed pkgconf freetype2 fontconfig libxcb xclip

Examples

Read code from file

silicon main.rs -o main.png 

Read code from clipboard, and copy the result image to clipboard

silicon --from-clipboard -l rs --to-clipboard

Specify a fallback font list and their size

silicon -o main.png -l bash -f 'Hack; SimSun=31; code2000' <<EOF
echo Hello
echo 你好
echo ∠( ᐛ 」∠)_
EOF

Highlight specified line

silicon main.rs -o main.png --highlight-lines '1; 3-4'

Custom the image

silicon ./target/test.rs -o test.png \
    --shadow-color '#555' --background '#fff' \
    --shadow-blur-radius 30 --no-window-controls

Transparent background

The color can be #RGB[A] or #RRGGBB[AA]

silicon ./target/test.rs -o test.png --background '#fff0'

see silicon --help for detail

Adding new syntaxes / themes

Silicon reads syntax-definition and theme cache from bat's cache directory.

You can find the steps to add new syntaxes / themes for bat here: sharkdp/bat#adding-new-syntaxes--language-definitions.

Configuration file

You can write some common args to silicon --config-file.

Example:

# enable shadow
--shadow-color '#555'
--background '#fff'
--shadow-blur-radius 30
--no-window-controls

Related projects

Comments
  • Silicon 0.4.0 on Big Sur generates empty window frames without text

    Silicon 0.4.0 on Big Sur generates empty window frames without text

    image

    I installed it using cargo install silicon after the latest pasteboard fixes were applied.

    I tried adding text via clipboard contents, from file and by entering it directly from stdin. In all cases the output image seems to be sized appropriate to amount of entered text, but the text itself is not visible.

    I wonder if this is a problem with fonts or themes, --list-themes as well as --list-fonts output non-empty lists. I've tried both default theme and font and custom theme (zenburn) and a fallback font (Hack).

    opened by berkus 11
  • Please describe how to add support for additional languages

    Please describe how to add support for additional languages

    First, thank you so much for this, the UX is definitely better than the Carbon CLI tool.

    Currently I'm missing support for WebAssembly Text format and I'm not sure how to add support for it in Silicon.

    I noticed that you are pulling syntaxes and themes from the bat repository, and support hasn't been added for WebAssembly there yet. However, I was able to locally add support for it in bat following their instructions: https://github.com/sharkdp/bat#adding-new-syntaxes--language-definitions

    Is there a way to make silicon use my local bat cache, or a way I can add it to the list of assets?

    I thought about making a request to bat about adding support for WebAssembly, but unfortunately it seems they have a requirement of at least 10000 downloads for the syntax package, which is far from the current number of downloads.

    opened by iensu 9
  • Add Apple Silicon Homebrew missing formula

    Add Apple Silicon Homebrew missing formula

    Overview

    Would it be possible to add a Homebrew formula for Apple Silcon machines?

    Steps to Recreate

    On a Apple Silicon machine, try running:

    brew install silicon
    

    You'll then get the following error:

    Warning: Treating silicon as a formula. For the cask, use homebrew/cask/silicon
    Error: silicon: no bottle available!
    

    Desired Behavior

    Would be nice to install Silicon via Homebrew without error.

    Environment

    macOS 11.2.1 (20D75) MacBook Air (M1, 2020)

    opened by bkuhlmann 7
  • Support background images

    Support background images

    This PR adds support for using images as a background

    • Added --background-image option, it is a path to the background image
    • Image is currently resized to fit (doesn't preserve aspect ratio)
    • Takes 2.5 seconds with a 6000x4000 image (500ms with solid color), maybe there's a way to make it faster
    • I'm a Rust newbie so my code can be bad, please let me know if there's a way to make it better
    opened by thecaralice 7
  • Can't compile on FreeBSD

    Can't compile on FreeBSD

    Message:

    error: failed to run custom build command for `servo-fontconfig-sys v4.0.7`
    
    Caused by:
      process didn't exit successfully: `/tmp/cargo-installNdcMYr/release/build/servo-fontconfig-sys-43a39c049132ec64/build-script-build` (exit code: 101)
    --- stderr
    make: illegal argument to -j -- must be positive integer!
    thread 'main' panicked at 'assertion failed: Command::new("make").env("MAKEFLAGS",
                             env::var("CARGO_MAKEFLAGS").unwrap_or_default()).args(&["-R",
    
      "-f",
    
      "makefile.cargo"]).status().unwrap().success()', /home/kamron/.cargo/registry/src/github.com-1ecc6299db9ec823/servo-fontconfig-sys-4.0.7/build.rs:20:5
    note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
    
    warning: build failed, waiting for other jobs to finish...
    error: failed to compile `silicon v0.2.5`, intermediate artifacts can be found
    at `/tmp/cargo-installNdcMYr`
    
    Caused by:
      build failed
    
    bug 
    opened by KamWithK 7
  • Allow zero for `--highlight-lines` value

    Allow zero for `--highlight-lines` value

    Overview

    Would it be possible to allow zero as a safe value for --highlight-lines? Example:

    silicon --to-clipboard --highlight-lines 0 example.rb
    

    Essentially, a value of zero would be like a no-op and as if the --highlight-lines option was never used. The reason why this is valuable is for wrapping in a shell script. Without this being possible, the following error happens instead:

    Segmentation fault: 11
    

    Screenshots/Screencasts

    Here is an example of a shell script that sets --highlight-lines to zero as a default option which will fail with the above mentioned error. It would be nice to allow zero in this situation.

    image

    Steps to Recreate

    touch example.rb
    silicon --to-clipboard --highlight-lines 0 example.rb
    

    Desired Behavior

    Don't throw a segfault and ignore --highlight-lines instead since it's a no-op.

    opened by bkuhlmann 5
  • Bump image from 0.21.2 to 0.22.0

    Bump image from 0.21.2 to 0.22.0

    Bumps image from 0.21.2 to 0.22.0.

    Changelog

    Sourced from image's changelog.

    Rust Image Release Notes

    Rust image aims to be a pure-Rust implementation of various popular image formats. Accompanying reading/write support, rust image provides basic imaging processing function. See README.md for further details.

    Known issues

    • Interlaced (progressive) or animated images are not well supported.
    • Images with n bit/channel (n ≠ 8) are not well supported.

    Changes

    Version 0.22

    • The required Rust version is now 1.34.2.
    • Note the website and blog: image-rs.org and [blog.image-rs.org][2]
    • PixelMut now only on ImageBuffer and removed from GenericImage interface. Prefer iterating manually in the generic case.
    • Replaced an unsafe interface in the hdr decoder with a safe variant.
    • Support loading 2-bit BMP images
    • Add method to save an ImageBuffer/DynamicImage with specified format
    • Update tiff to 0.3 with a writer
    • Update png to 0.15, fixes reading of interlaced sub-byte pixels
    • Always use custom struct for ImageDecoder::Reader
    • Added apply_without_alpha and map_without_alpha to Pixel trait
    • Pixel information now with associated constants instead of static methods
    • Changed color structs to tuple types with single component. Improves ergonomics of destructuring assignment and construction.
    • Add lifetime parameter on ImageDecoder trait.
    • Remove unecessary 'static bounds on affine operations
    • Add function to retrieve image dimensions without loading full image
    • Allow different image types in overlay and replace
    • Iterators over rows of ImageBuffer, mutable variants

    [2]: https://blog.image-rs.org

    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.


    Note: This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

    You can always request more updates by clicking Bump now in your Dependabot dashboard.

    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 ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it). To ignore the version in this PR you can just close it
    • @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
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

    dependencies 
    opened by dependabot-preview[bot] 5
  • panicked at 'assertion failed: !result.is_null()'

    panicked at 'assertion failed: !result.is_null()'

    Hi, getting a panic irrespective of the input file I try. Only tested so far on macOS with cargo --version 1.35.0 (6f3e9c367 2019-04-04).

    ` -> file test.rs test.rs: c program text, ASCII text

    -> export RUST_BACKTRACE=1 && silicon test.rs -o test.png thread 'main' panicked at 'assertion failed: !result.is_null()', /Users/jamie/.cargo/registry/src/github.com-1ecc6299db9ec823/core-graphics-0.17.3/src/context.rs:104:13 stack backtrace: 0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace 1: std::panicking::default_hook::{{closure}} 2: std::panicking::rust_panic_with_hook 3: std::panicking::begin_panic 4: font_kit::loaders::core_text::Font::rasterize_glyph 5: silicon::font::FontCollection::draw_text_mut 6: silicon::formatter::ImageFormatter::format 7: silicon::main 8: std::rt::lang_start::{{closure}} 9: main `

    bug 
    opened by jdm204 5
  • Failes to compile on Windows

    Failes to compile on Windows

    error[E0308]: mismatched types
       --> src\utils.rs:284:5
        |
    283 | pub fn dump_image_to_clipboard(image: &DynamicImage) -> Result<(), Error> {
        |                                                         ----------------- expected `std::result::Result<(), failure::Error>` because of return type
    284 |     format_err!("This feature hasn't been implemented in your system")
        |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected enum `std::result::Result`, found struct `failure::Error`
        |
        = note: expected type `std::result::Result<(), failure::Error>`
                   found type `failure::Error`
        = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
    
    error: aborting due to previous error
    
    For more information about this error, try `rustc --explain E0308`.
    error: Could not compile `silicon`.
    

    Can be fixed by wrapping format_err!() in an Err() like Err(format_err!("This feature hasn't been implemented in your system"))

    opened by Songtronix 5
  • Custom languages not detected by silicon but detected by bat

    Custom languages not detected by silicon but detected by bat

    Hey there! I'm running the latest silicon version from Homebrew.

    My bat config directory is:

    $ bat --config-dir
    /Users/jviotti/.config/bat
    

    I placed various files inside the syntaxes directory:

    $ ls /Users/jviotti/.config/bat/syntaxes
    asn.sublime-syntax        capnproto.sublime-syntax  thrift.sublime-syntax
    

    Which bat seems to detect correctly:

    $ bat --list-languages
    ...
    ASN                               asn
    ...
    Cap'n Proto                       capnp
    ...
    Thrift                            thrift
    

    However silicon fails when trying to render a file with one of those languages:

    $ silicon schema.thrift -o out.png --background '#ffffff' \
                    --no-window-controls --no-line-number --theme GitHub --language thrift \
                    --pad-horiz 20 --pad-vert 20
    [error] Unsupported language: thrift
    

    Am I missing something?

    opened by jviotti 4
  • Solidity language, supported by bat, is not supported by Silicon

    Solidity language, supported by bat, is not supported by Silicon

    This works:

    $ silicon -o debug.png -l sh --theme Coldark-Dark <<<'// This is a type for a single proposal.
    struct Proposal {
        bytes32 name;   // short name (up to 32 bytes)
        uint voteCount; // number of accumulated votes
    }'
    

    But these don't:

    $ silicon -o debug.png -l sol --theme Coldark-Dark <<<'// This is a type for a single proposal.
    struct Proposal {
        bytes32 name;   // short name (up to 32 bytes)
        uint voteCount; // number of accumulated votes
    }'
    [error] Unsupported language: sol
    $ silicon -o debug.png -l Solidity --theme Coldark-Dark <<<'// This is a type for a single proposal.
    struct Proposal {
        bytes32 name;   // short name (up to 32 bytes)
        uint voteCount; // number of accumulated votes
    }'
    [error] Unsupported language: Solidity
    

    Meanwhile:

    $ batcat --list-languages | grep -i solidity
    Solidity:sol
    $ batcat --version
    bat 0.19.0
    $ silicon --version
    silicon 0.4.3
    $ grep -Ei 'name|version' /etc/os-release
    
    NAME="Pop!_OS"
    VERSION="22.04 LTS"
    PRETTY_NAME="Pop!_OS 22.04 LTS"
    VERSION_ID="22.04"
    VERSION_CODENAME=jammy
    UBUNTU_CODENAME=jammy
    
    opened by AndydeCleyre 3
  • Cannot use `silicon` as a library

    Cannot use `silicon` as a library

    cargo b output:

    error[E0432]: unresolved import `anyhow`
     --> /home/krivah/.cargo/registry/src/github.com-1ecc6299db9ec823/silicon-0.5.1/src/assets.rs:4:5
      |
    4 | use anyhow::Result;
      |     ^^^^^^ use of undeclared crate or module `anyhow`
    
    error[E0432]: unresolved import `anyhow`
      --> /home/krivah/.cargo/registry/src/github.com-1ecc6299db9ec823/silicon-0.5.1/src/font.rs:17:5
       |
    17 | use anyhow::Result;
       |     ^^^^^^ use of undeclared crate or module `anyhow`
    
    For more information about this error, try `rustc --explain E0432`.
    

    silicon version: 0.5.1

    opened by krivahtoo 0
  • chore(deps): bump rayon from 1.5.3 to 1.6.1

    chore(deps): bump rayon from 1.5.3 to 1.6.1

    Bumps rayon from 1.5.3 to 1.6.1.

    Changelog

    Sourced from rayon's changelog.

    Release rayon 1.6.1 (2022-12-09)

    • Simplified par_bridge to only pull one item at a time from the iterator, without batching. Threads that are waiting for iterator items will now block appropriately rather than spinning CPU. (Thanks @​njaard!)
    • Added protection against recursion in par_bridge, so iterators that also invoke rayon will not cause mutex recursion deadlocks.

    Release rayon-core 1.10.1 (2022-11-18)

    • Fixed a race condition with threads going to sleep while a broadcast starts.

    Release rayon 1.6.0 / rayon-core 1.10.0 (2022-11-18)

    • The minimum supported rustc is now 1.56.
    • The new IndexedParallelIterator::fold_chunks and fold_chunks_with methods work like ParallelIterator::fold and fold_with with fixed-size chunks of items. This may be useful for predictable batching performance, without the allocation overhead of IndexedParallelIterator::chunks.
    • New "broadcast" methods run a given function on all threads in the pool. These run at a sort of reduced priority after each thread has exhausted their local work queue, but before they attempt work-stealing from other threads.
      • The global broadcast function and ThreadPool::broadcast method will block until completion, returning a Vec of all return values.
      • The global spawn_broadcast function and methods on ThreadPool, Scope, and ScopeFifo will run detached, without blocking the current thread.
    • Panicking methods now use #[track_caller] to report the caller's location.
    • Fixed a truncated length in vec::Drain when given an empty range.

    Contributors

    Thanks to all of the contributors for this release!

    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)
    dependencies 
    opened by dependabot[bot] 0
  • [Build Failed] `silicon` build failed on RISC-V board, looking for a solution.

    [Build Failed] `silicon` build failed on RISC-V board, looking for a solution.

    Hi, I'm from ArchRISC-V Team, a community porting Arch Linux software to RISC-V architecture.

    Description

    While porting silicon, we encountered a error, located on src/hb_wrapper.rs:17:17 and src/hb_wrapper.rs:91:17.

    It seems a force convert error, but I'm not sure. Maybe it's related to riscv architecture instruction set?

    Is there any advice about that? If so, I'll appreciate it.

    More info comes Appendix.

    Appendix

    Platform: Arch Linux, 6.0.2-arch1-1 #1 SMP PREEMPT Tue, 25 Oct 2022 14:31:13 +0000 riscv64 GNU/Linux

    Error Log
    
       Compiling env_logger v0.9.1
       Compiling syntect v5.0.0
       Compiling imageproc v0.23.0
       Compiling tempfile v3.3.0
       Compiling dirs v4.0.0
       Compiling clipboard v0.5.0
       Compiling structopt v0.3.26
       Compiling shell-words v1.1.0
       Compiling silicon v0.5.1 (/build/silicon/src/silicon-0.5.1)
    error[E0308]: mismatched types
       --> src/hb_wrapper.rs:17:17
        |
    16  |             hb_feature_from_string(
        |             ---------------------- arguments to this function are incorrect
    17  |                 tag.as_ptr() as *const i8,
        |                 ^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u8`, found `i8`
        |
        = note: expected raw pointer `*const u8`
                   found raw pointer `*const i8`
    note: function defined here
       --> /build/.cargo/registry/src/github.com-1ecc6299db9ec823/harfbuzz-sys-0.5.0/src/bindings.rs:422:12
        |
    422 |     pub fn hb_feature_from_string(
        |            ^^^^^^^^^^^^^^^^^^^^^^
    
    error[E0308]: mismatched types
        --> src/hb_wrapper.rs:91:17
         |
    89   |             hb_buffer_add_utf8(
         |             ------------------ arguments to this function are incorrect
    90   |                 self.buffer,
    91   |                 s.as_ptr() as *const i8,
         |                 ^^^^^^^^^^^^^^^^^^^^^^^ expected `u8`, found `i8`
         |
         = note: expected raw pointer `*const u8`
                    found raw pointer `*const i8`
    note: function defined here
        --> /build/.cargo/registry/src/github.com-1ecc6299db9ec823/harfbuzz-sys-0.5.0/src/bindings.rs:2651:12
         |
    2651 |     pub fn hb_buffer_add_utf8(
         |            ^^^^^^^^^^^^^^^^^^
    
    For more information about this error, try `rustc --explain E0308`.
    error: could not compile `silicon` due to 2 previous errors
    warning: build failed, waiting for other jobs to finish...
    ==> ERROR: A failure occurred in build().
        Aborting...
    ==> ERROR: Build failed, check /var/lib/archbuild/extra-riscv64/tinysnow/build
    
    Arch Linux PKGBUILD file
    # Maintainer: Sven-Hendrik Haase <[email protected]>
    # Contributor: Radoslaw Mejer <[email protected]>
    pkgname=silicon
    pkgver=0.5.1
    pkgrel=1
    pkgdesc="Create beautiful images of your code"
    depends=('fontconfig' 'freetype2' 'xclip')
    makedepends=('rust' 'cargo' 'glibc' 'llvm-libs' 'gcc-libs' 'clang' 'python')
    arch=('x86_64' 'riscv64')
    license=('MIT')
    url="https://github.com/Aloxaf/silicon"
    source=("$pkgname-$pkgver.tar.gz::https://github.com/Aloxaf/silicon/archive/v$pkgver.tar.gz")
    options=('!lto')
    sha256sums=('784a6f99001f2000422b676e637fe83a5dc27f5fc55ad33e227c882ce20e6439')
    
    build() {
        cd "$srcdir/silicon-$pkgver"
        cargo build --release --locked
    }
    
    check() {
        cd "$srcdir/silicon-$pkgver"
        cargo check --locked
    }
    
    package() {
        cd "$srcdir/silicon-$pkgver"
        install -Dm755 "target/release/silicon" "$pkgdir/usr/bin/$pkgname"
        install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
    }
    
    opened by TinySnow 0
  • chore(deps): bump image from 0.24.4 to 0.24.5

    chore(deps): bump image from 0.24.4 to 0.24.5

    Bumps image from 0.24.4 to 0.24.5.

    Changelog

    Sourced from image's changelog.

    Version 0.24.5

    Structural changes:

    • Increased the minimum supported Rust version (MSRV) to 1.61.
    • Increased the version requirement for the tiff crate to 0.8.0.
    • Increased the version requirement for the jpeg crate to 0.3.0.

    Bug fixes:

    • The as_rgb32f function of DynamicImage is now correctly documented.
    • Fixed a crash when decoding ICO images. Added a regression test.
    • Fixed a panic when transforming webp images. Added a regression test.
    • Added a check to prevent integer overflow when calculating file size for BMP images. The missing check could panic in debug mode or else set an incorrect file size in release mode.
    • Upgraded the PNG image encoder to use the newer PngEncoder::write_image instead of the deprecated PngEncoder::encode which did not account for byte order and could result in images with incorrect colors.
    • Fixed InsufficientMemory error when trying to decode a PNG image.
    • Fix warnings and CI issues.
    • Typos and links in the documentation have been corrected.

    Performance:

    • Added check for dynamic image dimensions before resizing. This improves performance in cases where the image does not need to be resized or has already been resized.
    Commits
    • aa1e81e Changes and release notes for 0.24.5
    • 88aadcb Merge pull request #1821 from micahsnyder/bump-jpeg-dependency
    • dffefce Bump the 'jpeg' version requirement to 0.3.0
    • bf0a96b Merge pull request #1812 from fintelia/png-with-limits
    • a7026e9 Merge pull request #1817 from Flashover89/Check-dimensions-for-dyn-image-befo...
    • 392798c Fix white spacing
    • 2be3d17 Merge branch 'image-rs:master' into Check-dimensions-for-dyn-image-before-res...
    • 4681225 Fix review findings
    • 1361f4a Add PngDecoder::with_limits
    • 1878c88 Merge pull request #1815 from fintelia/fix-ci
    • Additional commits viewable in compare view

    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)
    dependencies 
    opened by dependabot[bot] 0
Releases(v0.5.1)
Owner
Aloxaf
coder, ingresser
Aloxaf
A Rust library for calculating perceptual hash values of images

img_hash Now builds on stable Rust! (But needs nightly to bench.) A library for getting perceptual hash values of images. Thanks to Dr. Neal Krawetz f

Austin Bonander 264 Dec 9, 2022
Encoding and decoding images in Rust

Image Maintainers: @HeroicKatora, @fintelia How to contribute An Image Processing Library This crate provides basic image processing functions and met

image-rs 3.5k Jan 9, 2023
Rust bindings for OpenCV 3 & 4

Rust OpenCV bindings Experimental Rust bindings for OpenCV 3 and 4. The API is usable, but unstable and not very battle-tested; use at your own risk.

null 1.2k Dec 30, 2022
A simple steganography library written in rust

steganography A stable steganography library written in rust Crates.io Usage Add the following to the Cargo.toml in your project: [dependencies] stega

Teodor Voinea 79 Dec 9, 2022
Zero dependency images (of chaos) in Rust

bifurcate-rs Zero dependency images (of chaos) in Rust To run: time cargo run --release > img.pgm To convert from PGM to PNG using Image Magick: conve

Stephen Merity 32 Nov 17, 2021
tai (Terminal Ascii Image) tool to convert images to ascii written in Rust

TAI Terminal Ascii Image A tool to convert images to ascii art written in Rust ?? Notes This tool is still in development stage. Contributions All Con

Mustafa Salih 258 Dec 5, 2022
🎨 Example-based texture synthesis written in Rust 🦀

?? texture-synthesis A light Rust API for Multiresolution Stochastic Texture Synthesis [1], a non-parametric example-based algorithm for image generat

Embark 1.7k Dec 31, 2022
Face detection library for the Rust programming language

Rustface SeetaFace detection library for the Rust programming language Example of demo program output SEETAFACE C++ – Github repository for the origin

Andrei Tomashpolskiy 323 Dec 27, 2022
Rust CV mono-repo

Rust CV Rust CV is a project to implement computer vision algorithms, abstractions, and systems in Rust. #[no_std] is supported where possible. Docume

Rust Computer Vision 429 Dec 29, 2022
Visual Odometry in Rust (vors)

Visual Odometry in Rust (vors) This repository provides both a library ("crate" as we say in Rust) named visual-odometry-rs, (shortened vors) and a bi

Matthieu Pizenberg 42 Dec 29, 2022
A Telegram Bot written in Rust to Track new Github releases

Release Tracker This is used to track Releases posted on GitHub Releases and Post it on a Telegram Channel/Group. Setup Export env variables or just f

Kartikeya Hegde 20 Jul 7, 2022
A Simple-to-use, cross-platform Rust Webcam Capture Library

Cross Platform Rust Library for powerful Webcam Capture and Virtual Webcams

null 246 Jan 8, 2023
Classical Rainbow Triangle using Rust and Vulkan via vulkano bindings

Vulkano Rainbow Triangle Classical Rainbow Triangle using Rust and Vulkan via vulkano bindings. Based on the vulkano triangle example Quick Start $ ca

Tsoding 14 Dec 30, 2022
A simple image average color extractor written in 🦀 Rust

A simple image average color extractor written in ?? Rust

Victor Aremu 3 Sep 23, 2021
A simple command-line utility (and Rust crate!) for converting from a conventional image file (e.g. a PNG file) into a pixel-art version constructed with emoji

EmojiPix This is a simple command-line utility (and Rust crate!) for converting from a conventional image file (e.g. a PNG file) into a pixel-art vers

Michael Milton 22 Dec 6, 2022
😱 Dead fast thumbnail library for browser and NodeJs! Built with Rust 🦀 and WebAssembly 🕸

thumbo-core ?? Dead fast thumbnail library for browser and NodeJs Built with Rust ?? & WebAssembly ?? ?? About thumbo-core is a thubnail library for b

Victor Aremu 12 Dec 2, 2022
A Simple Image to Ascii converter in Rust

Image to Ascii A Simple Image to Ascii converter in Rust Brief ?? In my way to learn Rust i decided to make this converter. Challenges ?? new to Rust

WasixXD 7 Sep 16, 2022
@Buildspace project creating a Web3 Solana Dapp with React and Rust

buildspace Solana GIF Portal Project Welcome ?? To get started with this course, clone this repo and follow these commands: Run npm install at the roo

Nick Fragakis 2 Jul 22, 2022
Boids example ported from wgpu to rust-gpu

wgpu is Rust's main GPU project and rust-gpu is a project to write GPU shaders in Rust.

Thomas Buckley-Houston 2 Dec 1, 2022