Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ドライブ関連でにりみすが独自に持っている機能を追加するパッチ #2

Merged
merged 15 commits into from
Apr 18, 2024

Conversation

Sayamame-beans
Copy link

@Sayamame-beans Sayamame-beans commented Apr 9, 2024

What

cherry-picked from niri-la#50, niri-la#59, niri-la#170

  • 画像の圧縮方法を選択可能にしました
    • サイズ変更を行うかを選択可能にしました
    • 強制的に非可逆圧縮できるようになりました
    • 設定/ドライブからこの設定を変更できます
  • 4K/8K画像が2K以下で表示されてしまう問題を修正しました
    • 既存のファイルは更新されず、新規アップロード分にのみ適用されます
  • Enhance: 画像アップロード時に縮小する場合の大きさを2048x2048以下から2560x2560以下に変更しました
    • 既存のファイルは更新されず、新規アップロード分にのみ適用されます

サーバーのconfigにbuisoを増やし、その中にmaxWebImageSizeが増えています。
ここの値を変更すると、ユーザーに表示される画像の1辺の上限を変更することが出来ます。
設定されていない場合は8192になると思います。(8Kまでの画像がそのまま表示される状態)

Why

Misskey本家のドライブ関連の仕様と設定について整理します。

まず、Misskeyにおいては、ドライブに追加された画像と、それに対応する公開用画像(webpublic)の2種類が存在しています。
ノートを投稿したりした際に他のユーザーが閲覧出来るのはwebpublicであり、ドライブに追加されている画像そのものはアップロード者本人やモデレーターのみ閲覧可能です。(直リンクで共有すると他の人も一応見られます)

続いて設定についてです。
アップロード時のオリジナル保持設定は、ドライブ用画像を圧縮するかどうかの設定になります。
オリジナルを保持しないようにした場合、1辺最大2048の画像にリサイズされた後、圧縮が行われたものがドライブ用画像となります。
オリジナルを保持するようにした場合は、ドライブ用画像はそのままだったはずですが、公開用画像の上限は1辺最大2048の画像になってしまいます。(例えば、2560x1440の画像は2048x1152になります。)

従って、オリジナルを保持するようにしてアップロードしたとしても、ノートで投稿した際にユーザーが見られるのはwebpublicとして生成された1辺最大2048の画像になってしまうという訳です。
このPRでは、webpublicの解像度上限を拡張出来るようにする(デフォルトは8Kに変更)ほか、アップロード時に、"オリジナルは保持しないがリサイズはしない(圧縮だけ行う)"というような設定を可能にします。
更に、リサイズするとしても2048ではなく2560を上限とするように変更します。(これにより、WQHDの画像はそのまま見られるようになります)

後者の設定については、"縮小して再圧縮する"がデフォルト値になっています。これはMisskey本家と同じ(従来と同じ)挙動ですが、上限が2560になることによる恩恵は受けます。

Additional info (optional)

このPRはにりみすで当該機能が追加された時のコミットのcherry-pickとなりますが、元コミットは相当前のものであるため、現バージョンにマージする際に私側で更新漏れ/マージミスしている可能性があります。
cc: @anatawa12

Checklist

  • Read the contribution guide
  • Test working in a local environment
  • (If needed) Add story of storybook
  • (If needed) Update CHANGELOG.md
  • (If possible) Add tests

Copy link

@anatawa12 anatawa12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ほかはパット見良さそう

packages/backend/src/core/DriveService.ts Outdated Show resolved Hide resolved
I forgot to change code comment
@anatawa12
Copy link

StorybookはAPIの都合で落ちるのがわかってるのでActionsページで切っておくといいかもです (i544c-meさんがやること)

image

Copy link

@anatawa12 anatawa12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

よさそう

@Sayamame-beans
Copy link
Author

Sayamame-beans commented Apr 13, 2024

buiso.maxWebImageSizeについてですが、実際8Kだと大きいというのはあると思うので、4KかWQHDの最長辺(2560)辺りがバランスは良いと思います…?
(このパッチで、アップロードの際に縮小することを選択した際の上限を2560にする変更も入っているので、2560より小さくする(本家と同じ2048にする等)のは合わないかも)

@i544c-me
Copy link
Owner

@Sayamame-beans 返信遅れてすみません。あらためて、PR ありがとうございます!
検証用環境で問題無く動くことを確認しました🙏

自分の懸念点としては、こんな感じでした。

  • ユーザーに多くの選択肢を提示して複雑になってしまわないか
    • 非可逆圧縮はサーバー運営者には優しいですが、選ぶ人は少ない気がする
    • 選択肢から除外して認知負荷を下げてもいいかもしれない
    • 4択で提示するのではなく、2つのトグルで選択できるようにした方がユーザーには優しいかも?
  • (実はスパムの件でやむなくフォークしていたというのがあり...今回の機能変更で本家に戻るのが難しくなる)
    • 一応ロールバックできることは確認しました
    • 腹を決めて、フォークを維持していくことにしました

いずれにしてもこの PR は PR でマージした上で、こちらの方でカスタマイズしようかなと思っています。
本当にありがとうございます🙏🙏

@anatawa12
Copy link

  * 非可逆圧縮はサーバー運営者には優しいですが、選ぶ人は少ない気がする

こちらについてはドライブ使用量的なメリットが存在するので作成しました。

  * 4択で提示するのではなく、2つのトグルで選択できるようにした方がユーザーには優しいかも?

完全に思いついてませんでした。にりらでも採用を検討します。

@i544c-me i544c-me merged commit 6032893 into i544c-me:custom Apr 18, 2024
15 of 16 checks passed
@Sayamame-beans Sayamame-beans deleted the drive-patch branch April 21, 2024 04:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants