はじめに
Ionic Angularアプリ向けのPhoto Editor・Viewer Modal Pageです。Browserのfile選択に対応し、任意でCapacitorのCamera・Albumも使えます。
Installation
npm install @rdlabo/ionic-angular-photo-editor tui-image-editor
ブラウザで写真を選んで表示する
TUIのresize adapterを登録し(loadPhoto のresizeに必須)、fileを選んで返されたdata URLを表示します。
import { Component, inject, signal } from '@angular/core';
import type { ApplicationConfig } from '@angular/core';
import { IonButton, IonImg } from '@ionic/angular';
import { providePhotoEditor, PhotoLoadError } from '@rdlabo/ionic-angular-photo-editor';
import { createTuiImageEditor } from '@rdlabo/ionic-angular-photo-editor/editor/tui';
import { PhotoFileService } from '@rdlabo/ionic-angular-photo-editor/file';
export const appConfig: ApplicationConfig = {
providers: [
providePhotoEditor({
maxSize: 1000,
createImageEditor: createTuiImageEditor,
}),
],
};
@Component({
selector: 'app-photo-pick',
imports: [IonButton, IonImg],
template: `
<ion-button type="button" (click)="pick()">Select photo</ion-button>
@if (previewUrl()) {
<ion-img [src]="previewUrl()" alt="Selected photo"></ion-img>
}
`,
})
export class PhotoPickPage {
private readonly photoFileService = inject(PhotoFileService);
readonly previewUrl = signal('');
async pick(): Promise<void> {
try {
const files = await this.photoFileService.loadPhoto({ limit: 1 });
this.previewUrl.set(files[0] ?? '');
} catch (error) {
if (error instanceof PhotoLoadError && error.code === 'cancelled') {
return;
}
throw error;
}
}
}
Select photoをクリックして画像を選ぶと、previewが表示されます。NativeのCamera・Album設定は後段のPhotoFileServiceです。
Viewer・ネイティブカメラを追加する
追加する機能に合わせて依存をインストールします。
# viewer
npm install swiper
# native camera and album selection
npm install @capacitor/camera
ネイティブカメラを使う場合は、カメラ権限とPhotoFileServiceのadapterを設定します。iOSアプリの対象はiOS/iPadOS 16.4以降です。
Package entry point
| Import path | Export |
|---|---|
@rdlabo/ionic-angular-photo-editor |
型、providePhotoEditor、PHOTO_EDITOR_CONFIG、PhotoLoadError |
@rdlabo/ionic-angular-photo-editor/editor |
PhotoEditorPage |
@rdlabo/ionic-angular-photo-editor/editor/tui |
opt-inの createTuiImageEditor adapter |
@rdlabo/ionic-angular-photo-editor/viewer |
PhotoViewerPage |
@rdlabo/ionic-angular-photo-editor/file |
PhotoFileService |
@rdlabo/ionic-angular-photo-editor/file/capacitor |
opt-inの loadCapacitorPhotoCamera adapter |
ComponentとServiceは、そのentry pointからだけimportしてください。共有型と設定はroot packageからimportします。
編集目的から選ぶ
| 目的 | ガイド |
|---|---|
| CameraまたはAlbumから写真を読み込む | PhotoFileService |
| Modalで切り抜き・編集する | Photo Editor |
| Modalで画像を閲覧する | Photo Viewer |
| Editorの色を上書きする | Theme |
| 以前のreleaseからupgradeする | Migration guide |