Module: image-utils¶
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¶
npm install @self.id/image-utils
Common use-cases¶
Resize and upload an image to multiple dimensions¶
Using a SelfID
instance from the web
module.
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 Core
instance from the core
module.
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
}
Type aliases¶
Dimensions¶
Ƭ Dimensions: Object
Type declaration¶
Name | Type |
---|---|
height |
number |
width |
number |
SizeMode¶
Ƭ SizeMode: "contain"
| "cover"
Image size modes:
- "contain" = the image fits in the container
- "cover" = the image fills the container
SizedImage¶
Ƭ SizedImage: Dimensions
& { blob
: Blob
}
Functions¶
loadImage¶
▸ loadImage(blob
): Promise
<HTMLImageElement
>
Load a blob
image to an HTML Image element.
Parameters¶
Name | Type |
---|---|
blob |
Blob |
Returns¶
Promise
<HTMLImageElement
>
selectImageSource¶
▸ selectImageSource(sources
, dimensions
, mode?
): ImageMetadata
Select the best option from the given sources
to match the wanted dimensions
and mode
.
Parameters¶
Name | Type | Default value |
---|---|---|
sources |
ImageSources |
undefined |
dimensions |
Dimensions |
undefined |
mode |
SizeMode |
'cover' |
Returns¶
ImageMetadata
uploadFile¶
▸ uploadFile(url
, blob
, fileName?
): Promise
<string
>
Upload the blob
file to the given IPFS server url
, using the optionally given fileName
.
Parameters¶
Name | Type |
---|---|
url |
string |
blob |
Blob |
fileName? |
string |
Returns¶
Promise
<string
>
uploadImage¶
▸ uploadImage(url
, file
, sizes?
): Promise
<ImageSources
>
Upload an image to IPFS, optionally with additional alternative sizes
.
Parameters¶
Name | Type | Default value |
---|---|---|
url |
string |
undefined |
file |
File |
undefined |
sizes |
Dimensions [] |
[] |
Returns¶
Promise
<ImageSources
>
uploadResizedImage¶
▸ uploadResizedImage(url
, type
, image
, dimensions?
): Promise
<ImageMetadata
>
Resize an image and upload it to IPFS.
Parameters¶
Name | Type |
---|---|
url |
string |
type |
string |
image |
HTMLImageElement |
dimensions? |
Dimensions |
Returns¶
Promise
<ImageMetadata
>