# `Vibe.Image`
[🔗](https://github.com/elixir-vibe/vibe/blob/v0.2.3/lib/vibe/image.ex#L1)

Image data helpers for model, eval, and renderer boundaries.

# `t`

```elixir
@type t() :: %Vibe.Image{
  data: String.t(),
  filename: String.t() | nil,
  height: pos_integer() | nil,
  mime_type: String.t(),
  original_height: pos_integer() | nil,
  original_width: pos_integer() | nil,
  path: String.t() | nil,
  size_bytes: non_neg_integer() | nil,
  was_resized?: boolean(),
  width: pos_integer() | nil
}
```

# `data_uri`

```elixir
@spec data_uri(t()) :: String.t()
```

# `dimensions`

```elixir
@spec dimensions(binary(), String.t()) :: {pos_integer() | nil, pos_integer() | nil}
```

# `from_base64`

```elixir
@spec from_base64(String.t(), String.t(), keyword()) ::
  {:ok, t()} | {:error, String.t()}
```

# `from_base64!`

```elixir
@spec from_base64!(String.t(), String.t(), keyword()) :: t()
```

# `from_binary`

```elixir
@spec from_binary(String.t(), binary(), String.t(), File.Stat.t()) :: t()
```

# `from_file`

```elixir
@spec from_file(
  String.t(),
  keyword()
) :: {:ok, t()} | {:error, String.t()}
```

# `mime_type`

```elixir
@spec mime_type(String.t()) :: String.t() | nil
```

# `supported?`

```elixir
@spec supported?(String.t()) :: boolean()
```

# `supported_mime_types`

```elixir
@spec supported_mime_types() :: [String.t()]
```

# `to_content_parts`

```elixir
@spec to_content_parts(t()) :: [map()]
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
