wip
This commit is contained in:
parent
fa2b60c06d
commit
cb6327dda6
|
|
@ -5614,6 +5614,10 @@ export interface Locale extends ILocale {
|
|||
* フレームの編集
|
||||
*/
|
||||
"title": string;
|
||||
/**
|
||||
* 画像にフレームやメタデータを含んだラベルを追加して装飾できます。
|
||||
*/
|
||||
"tip": string;
|
||||
/**
|
||||
* フチの幅
|
||||
*/
|
||||
|
|
@ -12360,7 +12364,7 @@ export interface Locale extends ILocale {
|
|||
"defaultPreset": string;
|
||||
"_watermarkEditor": {
|
||||
/**
|
||||
* 画像にクレジット情報などのウォーターマークを追加することができます。
|
||||
* 画像にクレジット情報などのウォーターマークを追加できます。
|
||||
*/
|
||||
"tip": string;
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1400,6 +1400,7 @@ frame: "フレーム"
|
|||
|
||||
_imageFrameEditor:
|
||||
title: "フレームの編集"
|
||||
tip: "画像にフレームやメタデータを含んだラベルを追加して装飾できます。"
|
||||
borderThickness: "フチの幅"
|
||||
labelThickness: "ラベルの幅"
|
||||
labelScale: "ラベルのスケール"
|
||||
|
|
@ -3310,7 +3311,7 @@ _userLists:
|
|||
watermark: "ウォーターマーク"
|
||||
defaultPreset: "デフォルトのプリセット"
|
||||
_watermarkEditor:
|
||||
tip: "画像にクレジット情報などのウォーターマークを追加することができます。"
|
||||
tip: "画像にクレジット情報などのウォーターマークを追加できます。"
|
||||
quitWithoutSaveConfirm: "保存せずに終了しますか?"
|
||||
driveFileTypeWarn: "このファイルは対応していません"
|
||||
driveFileTypeWarnDescription: "画像ファイルを選択してください"
|
||||
|
|
|
|||
|
|
@ -62,12 +62,12 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
<MkInfo>
|
||||
<div>{{ i18n.ts._imageFrameEditor.availableVariables }}:</div>
|
||||
<div><code class="_selectableAtomic">{date}</code> - 撮影日時</div>
|
||||
<div><code class="_selectableAtomic">{model}</code> - カメラモデル</div>
|
||||
<div><code class="_selectableAtomic">{lensModel}</code> - レンズモデル</div>
|
||||
<div><code class="_selectableAtomic">{mm}</code> - 焦点距離 (例: 50)</div>
|
||||
<div><code class="_selectableAtomic">{f}</code> - 絞り値 (例: 1.8)</div>
|
||||
<div><code class="_selectableAtomic">{s}</code> - シャッタースピード (例: 1/125)</div>
|
||||
<div><code class="_selectableAtomic">{iso}</code> - ISO感度 (例: 100)</div>
|
||||
<div><code class="_selectableAtomic">{camera_model}</code> - カメラモデル</div>
|
||||
<div><code class="_selectableAtomic">{camera_lens_model}</code> - レンズモデル</div>
|
||||
<div><code class="_selectableAtomic">{camera_mm}</code> - 焦点距離 (例: 50)</div>
|
||||
<div><code class="_selectableAtomic">{camera_f}</code> - 絞り値 (例: 1.8)</div>
|
||||
<div><code class="_selectableAtomic">{camera_s}</code> - シャッタースピード (例: 1/125)</div>
|
||||
<div><code class="_selectableAtomic">{camera_iso}</code> - ISO感度 (例: 100)</div>
|
||||
</MkInfo>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -102,7 +102,7 @@ import { useMkSelect } from '@/composables/use-mkselect.js';
|
|||
const $i = ensureSignin();
|
||||
|
||||
const EXIF_MOCK = {
|
||||
DateTimeOriginal: { description: '2025:01:01 12:00:00' },
|
||||
DateTimeOriginal: { description: '2012:03:04 5:06:07' },
|
||||
Model: { description: 'Example camera' },
|
||||
LensModel: { description: 'Example lens 123mm f/1.23' },
|
||||
FocalLength: { description: '123mm' },
|
||||
|
|
@ -120,10 +120,12 @@ const frame = reactive<ImageFrameParams>(deepClone(props.frame) ?? {
|
|||
borderThickness: 0.05,
|
||||
labelThickness: 0.2,
|
||||
labelScale: 1.0,
|
||||
title: 'Untitled by @syuilo',
|
||||
text: '{mm}mm f/{f} {s}s ISO{iso}',
|
||||
title: '{year}/{0month}/{0day}',
|
||||
text: '{camera_mm}mm f/{camera_f} {camera_s}s ISO{camera_iso}',
|
||||
centered: false,
|
||||
withQrCode: true,
|
||||
bgColor: [255, 255, 255],
|
||||
fgColor: [0, 0, 0],
|
||||
});
|
||||
|
||||
const emit = defineEmits<{
|
||||
|
|
@ -138,7 +140,7 @@ async function cancel() {
|
|||
dialog.value?.close();
|
||||
}
|
||||
|
||||
const updateThrottled = throttle(100, () => {
|
||||
const updateThrottled = throttle(50, () => {
|
||||
if (renderer != null) {
|
||||
renderer.updateAndRender(frame);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||
<MkFolder>
|
||||
<template #icon><i class="ti ti-photo"></i></template>
|
||||
<template #label><SearchLabel>{{ i18n.ts.frame }}</SearchLabel></template>
|
||||
<template #caption>{{ i18n.ts._imageFrameEditor.tip }}</template>
|
||||
|
||||
<div class="_gaps">
|
||||
<div class="_gaps_s">
|
||||
|
|
|
|||
|
|
@ -62,12 +62,23 @@ export class ImageFrameRenderer {
|
|||
const date = meta_date.split(' ')[0].replaceAll(':', '/');
|
||||
switch (key) {
|
||||
case 'date': return date;
|
||||
case 'model': return this.exif.Model ? this.exif.Model.description : '-';
|
||||
case 'lensModel': return this.exif.LensModel ? this.exif.LensModel.description : '-';
|
||||
case 'mm': return this.exif.FocalLength ? this.exif.FocalLength.description.replace(' mm', '').replace('mm', '') : '-';
|
||||
case 'f': return this.exif.FNumber ? this.exif.FNumber.description.replace('f/', '') : '-';
|
||||
case 's': return this.exif.ExposureTime ? this.exif.ExposureTime.description : '-';
|
||||
case 'iso': return this.exif.ISOSpeedRatings ? this.exif.ISOSpeedRatings.description : '-';
|
||||
case 'year': return date.split('/')[0];
|
||||
case 'month': return date.split('/')[1].replace(/^0/, '');
|
||||
case 'day': return date.split('/')[2].replace(/^0/, '');
|
||||
case 'hour': return meta_date.split(' ')[1].split(':')[0].replace(/^0/, '');
|
||||
case 'minute': return meta_date.split(' ')[1].split(':')[1].replace(/^0/, '');
|
||||
case 'second': return meta_date.split(' ')[1].split(':')[2].replace(/^0/, '');
|
||||
case '0month': return date.split('/')[1];
|
||||
case '0day': return date.split('/')[2];
|
||||
case '0hour': return meta_date.split(' ')[1].split(':')[0];
|
||||
case '0minute': return meta_date.split(' ')[1].split(':')[1];
|
||||
case '0second': return meta_date.split(' ')[1].split(':')[2];
|
||||
case 'camera_model': return this.exif.Model ? this.exif.Model.description : '-';
|
||||
case 'camera_lens_model': return this.exif.LensModel ? this.exif.LensModel.description : '-';
|
||||
case 'camera_mm': return this.exif.FocalLength ? this.exif.FocalLength.description.replace(' mm', '').replace('mm', '') : '-';
|
||||
case 'camera_f': return this.exif.FNumber ? this.exif.FNumber.description.replace('f/', '') : '-';
|
||||
case 'camera_s': return this.exif.ExposureTime ? this.exif.ExposureTime.description : '-';
|
||||
case 'camera_iso': return this.exif.ISOSpeedRatings ? this.exif.ISOSpeedRatings.description : '-';
|
||||
default: return '-';
|
||||
}
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue