---
title: "Migrate to oneimage"
url: https://recursiveai.org/oneimage/migrate/
description: "Move .NET image code to OneImage from ImageSharp, SkiaSharp, System.Drawing or ImageSharp.Web: the API mapped call by call, with code side by side."
---

# Migrate to OneImage

Most ports are mechanical: an immutable `Image` instead of `Mutate` or a `Graphics`, `SaveOptions` instead of encoder objects, and nothing to dispose. Start with the guide for your library.

## Guides

- [From ImageSharp and System.Drawing](https://recursiveai.org/oneimage/docs/migrating/): The reference: concepts that differ, every common task side by side, behavior to expect after porting, and each ImageSharp, ImageSharp.Drawing, Fonts and ImageSharp.Web API with what OneImage has in its place. Docs
- [Migrate from ImageSharp](https://recursiveai.org/oneimage/articles/migrate-from-imagesharp/): A walk-through: swap the package, port `Mutate`, resize modes, encoders, metadata and pixel access, then move ImageSharp.Web to OneImage.Web. Article
- [Migrate from SkiaSharp](https://recursiveai.org/oneimage/articles/migrate-from-skiasharp/): From `SKBitmap` and `SKCanvas` to `Image` and `Canvas`: resizing, cropping, encoders, drawing, text, SVG and ASP.NET Core. Article
- [From ImageSharp.Web](https://recursiveai.org/oneimage/docs/web/#imagesharpweb-compatibility): OneImage.Web accepts the ImageSharp.Web query spellings, so existing image URLs keep working. Signed URLs need new tokens. Docs

## Choosing first?

The [comparison](https://recursiveai.org/oneimage/docs/comparison/) sets OneImage against ImageSharp, SkiaSharp, Magick.NET and NetVips, including when one of them is the better choice.

```sh
dotnet add package RecursiveAI.OneImage
```

- [Getting started](https://recursiveai.org/oneimage/docs/getting-started/)
- [All docs](https://recursiveai.org/oneimage/docs/)
