diff --git a/locales/index.d.ts b/locales/index.d.ts
index c0781594f8..a4e9bf41e8 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -5605,7 +5605,7 @@ export interface Locale extends ILocale {
* 技術的なお問い合わせの際に、以下の情報を併記すると問題の解決に役立つことがあります。
*/
"deviceInfoDescription": string;
- "_imageLabelEditor": {
+ "_imageFrameEditor": {
/**
* ラベルの編集
*/
@@ -5613,7 +5613,7 @@ export interface Locale extends ILocale {
/**
* フレームの幅
*/
- "frameThickness": string;
+ "borderThickness": string;
/**
* ラベルの幅
*/
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index d5b18b7afe..977b7d459e 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -1396,10 +1396,11 @@ scheduled: "予約"
widgets: "ウィジェット"
deviceInfo: "デバイス情報"
deviceInfoDescription: "技術的なお問い合わせの際に、以下の情報を併記すると問題の解決に役立つことがあります。"
+frame: "フレーム"
-_imageLabelEditor:
- title: "ラベルの編集"
- frameThickness: "フレームの幅"
+_imageFrameEditor:
+ title: "フレームの編集"
+ borderThickness: "フチの幅"
labelThickness: "ラベルの幅"
labelScale: "ラベルのスケール"
centered: "中央揃え"
diff --git a/packages/frontend/src/components/MkImageLabelEditorDialog.vue b/packages/frontend/src/components/MkImageFrameEditorDialog.vue
similarity index 88%
rename from packages/frontend/src/components/MkImageLabelEditorDialog.vue
rename to packages/frontend/src/components/MkImageFrameEditorDialog.vue
index 04bc84c23c..fb587e7479 100644
--- a/packages/frontend/src/components/MkImageLabelEditorDialog.vue
+++ b/packages/frontend/src/components/MkImageFrameEditorDialog.vue
@@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
@ok="save()"
@closed="emit('closed')"
>
- {{ i18n.ts._imageLabelEditor.title }}
+ {{ i18n.ts._imageFrameEditor.title }}
@@ -31,36 +31,36 @@ SPDX-License-Identifier: AGPL-3.0-only
-
- {{ i18n.ts._imageLabelEditor.frameThickness }}
+
+ {{ i18n.ts._imageFrameEditor.borderThickness }}
- {{ i18n.ts._imageLabelEditor.labelThickness }}
+ {{ i18n.ts._imageFrameEditor.labelThickness }}
- {{ i18n.ts._imageLabelEditor.labelScale }}
+ {{ i18n.ts._imageFrameEditor.labelScale }}
- {{ i18n.ts._imageLabelEditor.centered }}
+ {{ i18n.ts._imageFrameEditor.centered }}
- {{ i18n.ts._imageLabelEditor.captionMain }}
+ {{ i18n.ts._imageFrameEditor.captionMain }}
- {{ i18n.ts._imageLabelEditor.captionSub }}
+ {{ i18n.ts._imageFrameEditor.captionSub }}
- {{ i18n.ts._imageLabelEditor.withQrCode }}
+ {{ i18n.ts._imageFrameEditor.withQrCode }}
- {{ i18n.ts._imageLabelEditor.availableVariables }}:
+ {{ i18n.ts._imageFrameEditor.availableVariables }}:
{date} - 撮影日時
{model} - カメラモデル
{lensModel} - レンズモデル
@@ -80,8 +80,8 @@ SPDX-License-Identifier: AGPL-3.0-only
import { ref, useTemplateRef, watch, onMounted, onUnmounted, reactive, nextTick } from 'vue';
import ExifReader from 'exifreader';
import { throttle } from 'throttle-debounce';
-import type { ImageLabelParams } from '@/utility/image-label-renderer.js';
-import { ImageLabelRenderer } from '@/utility/image-label-renderer.js';
+import type { ImageFrameParams } from '@/utility/image-frame-renderer.js';
+import { ImageFrameRenderer } from '@/utility/image-frame-renderer.js';
import { i18n } from '@/i18n.js';
import MkModalWindow from '@/components/MkModalWindow.vue';
import MkSelect from '@/components/MkSelect.vue';
@@ -112,13 +112,12 @@ const EXIF_MOCK = {
} satisfies ExifReader.Tags;
const props = defineProps<{
- frame?: ImageLabelParams | null;
+ frame?: ImageFrameParams | null;
image?: File | null;
}>();
-const frame = reactive(deepClone(props.frame) ?? {
- style: 'frame',
- frameThickness: 0.05,
+const frame = reactive(deepClone(props.frame) ?? {
+ borderThickness: 0.05,
labelThickness: 0.2,
labelScale: 1.0,
title: 'Untitled by @syuilo',
@@ -128,7 +127,7 @@ const frame = reactive(deepClone(props.frame) ?? {
});
const emit = defineEmits<{
- (ev: 'ok', frame: ImageLabelParams): void;
+ (ev: 'ok', frame: ImageFrameParams): void;
(ev: 'cancel'): void;
(ev: 'closed'): void;
}>();
@@ -187,21 +186,21 @@ async function choiceImage() {
}
}
-let renderer: ImageLabelRenderer | null = null;
+let renderer: ImageFrameRenderer | null = null;
let imageBitmap: ImageBitmap | null = null;
async function initRenderer() {
if (canvasEl.value == null) return;
if (sampleImageType.value === '3_2') {
- renderer = new ImageLabelRenderer({
+ renderer = new ImageFrameRenderer({
canvas: canvasEl.value,
image: sampleImage_3_2,
exif: EXIF_MOCK,
renderAsPreview: true,
});
} else if (sampleImageType.value === '2_3') {
- renderer = new ImageLabelRenderer({
+ renderer = new ImageFrameRenderer({
canvas: canvasEl.value,
image: sampleImage_2_3,
exif: EXIF_MOCK,
@@ -212,7 +211,7 @@ async function initRenderer() {
const exif = ExifReader.load(await imageFile.arrayBuffer());
- renderer = new ImageLabelRenderer({
+ renderer = new ImageFrameRenderer({
canvas: canvasEl.value,
image: imageBitmap,
exif: exif,
diff --git a/packages/frontend/src/composables/use-uploader.ts b/packages/frontend/src/composables/use-uploader.ts
index 5519f8a6f5..8e7a8f7ad9 100644
--- a/packages/frontend/src/composables/use-uploader.ts
+++ b/packages/frontend/src/composables/use-uploader.ts
@@ -18,7 +18,7 @@ import { uploadFile, UploadAbortedError } from '@/utility/drive.js';
import * as os from '@/os.js';
import { ensureSignin } from '@/i.js';
import { WatermarkRenderer } from '@/utility/watermark.js';
-import { ImageLabelRenderer } from '@/utility/image-label-renderer.js';
+import { ImageFrameRenderer } from '@/utility/image-frame-renderer.js';
export type UploaderFeatures = {
imageEditing?: boolean;
@@ -575,7 +575,7 @@ export function useUploader(options: {
const exif = await ExifReader.load(await item.file.arrayBuffer());
- const labelRenderer = new ImageLabelRenderer({
+ const labelRenderer = new ImageFrameRenderer({
canvas: canvas,
image: await window.createImageBitmap(preprocessedFile),
exif,
diff --git a/packages/frontend/src/pages/settings/drive.vue b/packages/frontend/src/pages/settings/drive.vue
index cf561b8164..9609c86555 100644
--- a/packages/frontend/src/pages/settings/drive.vue
+++ b/packages/frontend/src/pages/settings/drive.vue
@@ -127,7 +127,7 @@ SPDX-License-Identifier: AGPL-3.0-only
- {{ i18n.ts.label }}
+ {{ i18n.ts.frame }}
@@ -141,7 +141,7 @@ SPDX-License-Identifier: AGPL-3.0-only
/>
-->
-
+