summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkCropperDialog.vue
diff options
context:
space:
mode:
authortaichan <40626578+tai-cha@users.noreply.github.com>2024-02-05 15:01:31 +0900
committerGitHub <noreply@github.com>2024-02-05 15:01:31 +0900
commitddfc3b8a6a398f005ccb186654572b37f5e232a5 (patch)
tree2edcba76d7816715f3c5233da6a1c64bea12cd41 /packages/frontend/src/components/MkCropperDialog.vue
parentNew Crowdin updates (#13156) (diff)
downloadsharkey-ddfc3b8a6a398f005ccb186654572b37f5e232a5.tar.gz
sharkey-ddfc3b8a6a398f005ccb186654572b37f5e232a5.tar.bz2
sharkey-ddfc3b8a6a398f005ccb186654572b37f5e232a5.zip
Fix(frontend): クロップ後の解像度が異様に低くなる問題の修正&クロップに失敗する問題&コメントにnullという文字列が入る問題の修正 (#13162)
* Fix(frontend): Fix resolution of cropped image (misskey-dev#11489) * CHANGELOG * Fix(frontend): クロップの際、folderIdがnullだと文字列のnullが送られ検索できない問題 * Fix: キャプションが存在しないときにクロップすると'null'がキャプションに入ってしまう問題 (misskey-dev#11813) * Update CHANGELOG
Diffstat (limited to 'packages/frontend/src/components/MkCropperDialog.vue')
-rw-r--r--packages/frontend/src/components/MkCropperDialog.vue17
1 files changed, 12 insertions, 5 deletions
diff --git a/packages/frontend/src/components/MkCropperDialog.vue b/packages/frontend/src/components/MkCropperDialog.vue
index 0a1ddd3171..745453646c 100644
--- a/packages/frontend/src/components/MkCropperDialog.vue
+++ b/packages/frontend/src/components/MkCropperDialog.vue
@@ -63,18 +63,25 @@ const loading = ref(true);
const ok = async () => {
const promise = new Promise<Misskey.entities.DriveFile>(async (res) => {
- const croppedCanvas = await cropper?.getCropperSelection()?.$toCanvas();
+ const croppedImage = await cropper?.getCropperImage();
+ const croppedSection = await cropper?.getCropperSelection();
+
+ // 拡大率を計算し、(ほぼ)元の大きさに戻す
+ const zoomedRate = croppedImage.getBoundingClientRect().width / croppedImage.clientWidth;
+ const widthToRender = croppedSection.getBoundingClientRect().width / zoomedRate;
+
+ const croppedCanvas = await croppedSection?.$toCanvas({ width: widthToRender });
croppedCanvas?.toBlob(blob => {
if (!blob) return;
const formData = new FormData();
formData.append('file', blob);
formData.append('name', `cropped_${props.file.name}`);
formData.append('isSensitive', props.file.isSensitive ? 'true' : 'false');
- formData.append('comment', props.file.comment ?? 'null');
+ if (props.file.comment) { formData.append('comment', props.file.comment);}
formData.append('i', $i!.token);
- if (props.uploadFolder || props.uploadFolder === null) {
- formData.append('folderId', props.uploadFolder ?? 'null');
- } else if (defaultStore.state.uploadFolder) {
+ if (props.uploadFolder) {
+ formData.append('folderId', props.uploadFolder);
+ } else if (props.uploadFolder !== null && defaultStore.state.uploadFolder) {
formData.append('folderId', defaultStore.state.uploadFolder);
}