/** * Image utilities for Self.ID profiles. * * ## Purpose * * The `image-utils` module provides various utility functions for images, such as selecting the * most suitable format among sources, resizing and uploading, and is mostly meant to be used in a * Web browser context. * * ## Installation * * ```sh * npm install @self.id/image-utils * ``` * * ## Common use-cases * * ### Resize and upload an image to multiple dimensions * * Using a {@linkcode web.SelfID SelfID} instance from the {@linkcode web} module. * * ```ts * import { uploadImage } from '@self.id/image-utils' * * // The `file` argument must implement the File interface from * // https://developer.mozilla.org/en-US/docs/Web/API/File * async function setProfileImage(selfID, file) { * const imageSources = await uploadFile( * 'https://ipfs.infura.io:5001/api/v0', * file, * [{ width: 60, height: 60 }, { width: 200, height: 200 }], * ) * // Here `selfID` must be an instance of `SelfID` from the `web` module * await selfID.merge({ image: imageSources }) * } * ``` * * ### Get the most suitable image source for given dimensions * * Using a {@linkcode core.Core Core} instance from the {@linkcode core} module. * * ```ts * import { Core } from '@self.id/core' * import { selectImageSource } from '@self.id/image-utils' * * const core = new Core({ ceramic: 'testnet-clay' }) * * async function getAvatarSource(did) { * const profile = await core.get('basicProfile', did) * return profile?.image ? selectImageSource(profile.image, { width: 60, height: 60 }) : null * } * ``` * * @module image-utils */ export * from './ipfs.js' export * from './loading.js' export * from './selection.js' export * from './types.js'