README.md

# ai-minecraft-image

A library for converting images into Minecraft skin formats, providing a convenient way to generate character appearances programmatically. This package simplifies the process of creating Minecraft skins from various image sources.

## Installation

Add `ai_minecraft_image` to your list of dependencies in `mix.exs`:
elixir
def deps do
  [
    {:ai_minecraft_image, "~> 0.1.0"}
  ]
end

Then, run `mix deps.get` to fetch the dependency.

## Usage

Here are some examples demonstrating how to use `ai-minecraft-image`:

**1. Basic Image to Skin Conversion:**
elixir
image_path = "path/to/your/image.png"

case AiMinecraftImage.convert(image_path) do
  {:ok, skin_data} ->
    # Skin data is a binary that can be saved to a file or used elsewhere.
    File.write!("skin.png", skin_data)
    IO.puts("Skin created successfully!")

  {:error, reason} ->
    IO.puts("Error creating skin: #{reason}")
end

**2. Handling Different Image Formats:**
elixir
defmodule ImageConverter do
  def convert_to_skin(image_path) do
    case AiMinecraftImage.convert(image_path) do
      {:ok, skin_data} -> {:ok, skin_data}
      {:error, reason} -> {:error, reason}
    end
  end
end

case ImageConverter.convert_to_skin("path/to/another/image.jpg") do
  {:ok, skin_data} ->
    # Process the skin data
    File.write!("skin2.png", skin_data)
  {:error, reason} ->
    IO.puts("Conversion failed: #{reason}")
end

**3. Using Pipes for Chained Operations:**
elixir
"path/to/my/image.bmp"
|> AiMinecraftImage.convert()
|> case do
  {:ok, skin_data} ->
    File.write!("skin3.png", skin_data)
    :ok
  {:error, reason} ->
    IO.puts("Error: #{reason}")
    :error
end

**4. Pattern Matching on Result Types:**
elixir
defmodule SkinProcessor do
  def process_image(image_path) do
    AiMinecraftImage.convert(image_path)
    |> handle_result()
  end

  defp handle_result({:ok, skin_data}) do
    # Further processing of the skin data.  For example, uploading it to a service.
    File.write!("processed_skin.png", skin_data)
    IO.puts("Skin processed successfully.")
  end

  defp handle_result({:error, reason}) do
    IO.puts("Error during processing: #{reason}")
  end
end

SkinProcessor.process_image("path/to/yet/another/image.gif")

**5. Handling Invalid Image Paths:**
elixir
image_path = "nonexistent/image.png"

case AiMinecraftImage.convert(image_path) do
  {:ok, _} ->
    IO.puts("This should not happen.")
  {:error, :file_not_found} ->
    IO.puts("Image file not found. Please check the path.")
  {:error, reason} ->
    IO.puts("An unexpected error occurred: #{reason}")
end

## Features

*   **Simple Image Conversion:** Easily transform images into Minecraft skin format.
*   **Error Handling:** Provides clear error messages for common issues like invalid file paths or unsupported image formats.
*   **Binary Output:** Returns the skin data as a binary, ready to be saved to a file or used in other applications.
*   **Idiomatic Elixir API:** Designed for seamless integration with Elixir projects, leveraging pattern matching and pipelines.

## License

MIT

This package is part of the ai-minecraft-image ecosystem. For advanced features and enterprise-grade tools, visit: https://supermaker.ai/image/blog/how-to-turn-your-image-into-minecraft-skin/