Skip to content

Latest commit

 

History

History
147 lines (100 loc) · 5.35 KB

File metadata and controls

147 lines (100 loc) · 5.35 KB

Image Conversion Software with C and Rust

Introduction

Building a website for image file conversion in formats such as JPG, PNG, and GIF by using a FFI (Foreign Function Interface) in Rust to interface with the ImageMagick C library.

Index

About

This repository contains my independent redesign of an image-conversion application originally devloped as a five-person programming course project at Rowan University. This current version is an independent redesign that substantially rebuilds the original C library, Rust FFI integration, server architecture, build system, and documentation.

This project leverages functions from the ImageMagick library (https://imagemagick.org/), a "free, open-source software suite, used for editing and manipulating digital images." The C library utilizes MagickWand (C API for ImageMagick) to write 5 custom functions: 4 allowing for image conversion to JPG/JPEG, PNG, TIFF, and WEBP, and 1 GIF-creation function.

Usage

Write about how to use this project.

Installation

  • Steps on how to install this project, to use it.
  • Be very detailed here, For example, if you have tools which run on different operating systems, write installation steps for all of them.
$ add installations steps if you have to.

Commands

  • Commands to start the project.

Development

If you want other people to contribute to this project, this is the section, make sure you always add this.

Pre-Requisites

List all the pre-requisites the system needs to develop this project.

  • A tool
  • B tool

Development Environment

Write about setting up the working environment for your project.

  • How to download the project...
  • How to install dependencies...

File Structure

Add a file structure here with the basic details about files, below is an example.

No File Name Details
1 index Entry point

Build

Write the build Instruction here.

Deployment

Write the deployment instruction here.

Community

If it's open-source, talk about the community here, ask social media links and other links.

Contribution

Your contributions are always welcome and appreciated. Following are the things you can do to contribute to this project.

  1. Report a bug
    If you think you have encountered a bug, and I should know about it, feel free to report it here and I will take care of it.

  2. Request a feature
    You can also request for a feature here, and if it will viable, it will be picked for development.

  3. Create a pull request
    It can't get better then this, your pull request will be appreciated by the community. You can get started by picking up any open issues from here and make a pull request.

If you are new to open-source, make sure to check read more about it here and learn more about creating a pull request here.

Branches

I use an agile continuous integration methodology, so the version is frequently updated and development is really fast.

  1. stage is the development branch.

  2. master is the production branch.

  3. No other permanent branches should be created in the main repository, you can create feature branches but they should get merged with the master.

Steps to work with feature branch

  1. To start working on a new feature, create a new branch prefixed with feat and followed by feature name. (ie. feat-FEATURE-NAME)
  2. Once you are done with your changes, you can raise PR.

Steps to create a pull request

  1. Make a PR to stage branch.
  2. Comply with the best practices and guidelines e.g. where the PR concerns visual elements it should have an image showing the effect.
  3. It must pass all continuous integration checks and get positive reviews.

After this, changes will be merged.

Guideline

coding guidelines or other things you want people to follow should follow.

FAQ

You can optionally add a FAQ section about the project.

Resources

Add important resources here

Gallery

Pictures of your project.

Credit/Acknowledgment

Credit the authors here.

License

Copyright 2025 Conner Bolton, Bryson Grant, Matthew Maselli, Rohan Patel, Yash Patel

Licensed under the ImageMagick License (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

 https://imagemagick.org/script/license.php

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.