Skip to content

v1.0.0

Compare
Choose a tag to compare
@luca992 luca992 released this 10 Oct 19:14
· 25 commits to main since this release

v1.0.0 Release!

  • kotlin 2.0.21
  • compose 1.6.11
  • ktor: 3.0.0

v0.x -> v1.x notes:

New

  • #85 WasmJs support!
  • #96 With media.kamel:kamel-image is now bare bones and lets you pick and choose all mappers, fetchers, and decoders to import into your project that are not included in kamel-core.
  • #96 media.kamel:kamel-image-default Includes all includes all packages besides kamel-decoder-svg-batik
  • Adds a FileUrlFetcher to support loading non-resource local files
  • String mapper will now handle file:/// uris: asyncPainterResource("file:///$absolutePath")
  • Adds gif support! #12 with #100 by @luca992
  • Prevent out of memory exceptions for xl images with experimental Image resizing image bitmap decoder (Android only right now) #105 by @luca992
    • To try out add implementation("media.kamel:kamel-decoder-image-bitmap-resizing:1.0.0-beta.6") and add imageBitmapResizingDecoder() to your KamelConfig

Breaking changes

  • Change media.kamel:kamel-image -> media.kamel:kamel-image-default for the same behavior as pre 1.0.0 releases.
  • Old Depreciated methods removed

Depreciated

Setup

Default Setup

Add the dependency to the common source-set or to any platform source-set:

kotlin {
    sourceSets {
        commonMain {
            dependencies {
                implementation("media.kamel:kamel-image-default:1.0.0")
                // no need to specify ktor engines, one is included for each target
                // ...
            }
        }
    }
}

Granular Setup

For a more granular setup, you can choose which modules to include in your project:

kotlin {
    sourceSets {
        commonMain {
            dependencies {
                // core module (required)
                implementation("media.kamel:kamel-image:1.0.0")
                
                // Note: When using `kamel-image` a ktor engine is not included.
                // To fetch remote images you also must ensure you add your own 
                // ktor engine for each target.
                
                // optional modules (choose what you need and add them to your kamel config)
                implementation("media.kamel:kamel-decoder-image-bitmap:1.0.0")
                implementation("media.kamel:kamel-decoder-image-bitmap-resizing:1.0.0") // android only right now
                implementation("media.kamel:kamel-decoder-image-vector:1.0.0")
                implementation("media.kamel:kamel-decoder-svg-batik:1.0.0")
                implementation("media.kamel:kamel-decoder-svg-std:1.0.0")
                implementation("media.kamel:kamel-decoder-animated-image:1.0.0")

                implementation("media.kamel:kamel-fetcher-resources-jvm:1.0.0")
                implementation("media.kamel:kamel-fetcher-resources-android:1.0.0")
                // ...
            }
        }

        jvmMain {
            dependencies {
                // optional modules (choose what you need and add them to your kamel config)
                implementation("media.kamel:kamel-fetcher-resources-jvm:1.0.0")
                // ...
            }
        }

        androidMain {
            dependencies {
                // optional modules (choose what you need and add them to your kamel config)
                implementation("media.kamel:kamel-fetcher-resources-android:1.0.0")
                // ...
            }
        }
    }
}
Granular Setup: Ktor HttpClient Engine

When using kamel-image ktor engines are not included per target.
In order to fetch remote images you also must ensure you add your own ktor engine for each target.
You can find the available engines here.