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

enhance: ドライブに画像ファイルをアップロードするときオリジナル画像を破棄してwebpublicのみ保持するオプション #8216

Merged
merged 49 commits into from
Apr 28, 2022

Conversation

tamaina
Copy link
Contributor

@tamaina tamaina commented Jan 29, 2022

Resolve #6626
Resolve #7704
Resolve #8167
Resolve #8173
Fix #8558

What

#8176, #8215 のつづき

  • 画像ファイルをアップロードするとき圧縮してオリジナルをアップロードしないオプション(デフォルトでオリジナルをアップロードしないように)
  • アップロードされた画像がwebpublicの条件を満たしている場合はwebpublicを生成しないように
  • ドライブ(ファイル一覧)画面でアップロードするときやファイル選択メニュー(画像)で一時的にオリジナルをアップロードするかどうか選択できるように
  • ついでに諸々の圧縮形式をwebpにする

image

Why

  • サーバーのストレージの容量・ファイル数を削減する
  • アップロードの容量を軽くできる

Additional Info

orientationが付いてる画像をアップするとうまく回転してくれない問題には手を付けていない
ericnograles/browser-image-resizer#34

@tamaina
Copy link
Contributor Author

tamaina commented Jan 30, 2022

Safariでwebpを出力するとやたらファイル容量がでかくなる

第二引数(quality)はwebpしか対応していないため

image
https://developer.apple.com/documentation/webkitjs/htmlcanvaselement/1630000-todataurl

@tamaina
Copy link
Contributor Author

tamaina commented Feb 16, 2022

@tamaina
Copy link
Contributor Author

tamaina commented Feb 16, 2022

CSSのimage-orientationに対応してたら自動回転対応みたいな感じで良いのかもしれない
https://caniuse.com/css-image-orientation

@mei23
Copy link
Contributor

mei23 commented Feb 16, 2022

どのブラウザのどのバージョンまでが自動回転しなかった(?)のか不明なんだけど何か情報ないかしら

2020年4月の時点で自動回転しなかったのはFirefoxだけなので、今は流石に大丈夫だろうというのしかわからないわね。
w3c/csswg-drafts#4666 (comment)

@mei23
Copy link
Contributor

mei23 commented Feb 16, 2022

CSSのimage-orientationに対応してたら自動回転対応みたいな感じで良いのかもしれない

image-orientation対応とcanvas自動回転のタイミングは一致してなさそうだからダメそう

@mei23
Copy link
Contributor

mei23 commented Feb 16, 2022

どのブラウザのどのバージョンまでが自動回転しなかった

Firefoxは、たぶん78 (2020年7月) からちゃんとcanvasも回転
https://bugzilla.mozilla.org/show_bug.cgi?id=1615440
https://bugzilla.mozilla.org/show_bug.cgi?id=1635315

Chromeは、たぶん上の通り81から

Safariは、canvasサポートかはわからないけどChromeと同じタイミングだと13.1から

@tamaina
Copy link
Contributor Author

tamaina commented Feb 16, 2022

ExifReaderなくしたらコード量が相当減ったので遅延ロードはしないようにした

@tamaina
Copy link
Contributor Author

tamaina commented Apr 27, 2022

misskey.ioに導入されている(?)

@syuilo
Copy link
Member

syuilo commented Apr 27, 2022

あきうすの別のPRマージしたら一緒にくっついてきた
全Misskeyで導入されている

@tamaina
Copy link
Contributor Author

tamaina commented Apr 27, 2022

#8215

チェックボックス機能してないなこれ

@tamaina
Copy link
Contributor Author

tamaina commented Apr 27, 2022

p1.a9z.devを除くMisskeyはチェックボックスだけ存在して機能はまったくしていない状態

@syuilo
Copy link
Member

syuilo commented Apr 28, 2022

🙏🏻

@@ -27,6 +27,7 @@ export async function GenerateVideoThumbnail(path: string): Promise<IImage> {

const outPath = `${outDir}/output.png`;

// JPEGに変換 (Webpでもいいが、MastodonはWebpをサポートせず表示できなくなる)
Copy link
Contributor

Choose a reason for hiding this comment

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

動画のサムネイルがリモートに送られることはなかった気がするわ

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@bindThis
public renderDocument(file: DriveFile) {
return {
type: 'Document',
mediaType: file.type,
url: this.driveFileEntityService.getPublicUrl(file),
name: file.comment,
};
}

そうかも

Copy link
Contributor Author

Choose a reason for hiding this comment

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

うーん、ffmpegがwebpをサポートしてなかったのが原因か…?

Copy link
Contributor

@mei23 mei23 Dec 24, 2022

Choose a reason for hiding this comment

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

一度ffmpegで原寸のPNGを出してからJPEG変換+リサイズしているのは、ffmpegにいい感じの縮小メソッドがなかった (アス比保持で最大サイズに外接でするのがうまくいかなかった) からだった気がするのだわ。

Copy link
Member

Choose a reason for hiding this comment

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

See #8825

Copy link
Contributor Author

Choose a reason for hiding this comment

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

多分ffmpeg周り触るたびに毎回言ってるぐらいの感じなんだろうけど、代案が見つからないのでIssue建てるのを躊躇したみたいな感じなのでは。

移行するなら https://github.com/ffmpegwasm/ffmpeg.wasm とか?

Copy link
Contributor

Choose a reason for hiding this comment

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

fluent-ffmpegはやめてないはずだわ
#5186

Copy link
Member

Choose a reason for hiding this comment

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

多分それ

移行するなら https://github.com/ffmpegwasm/ffmpeg.wasm とか?

基本的には生で支障ないから execa とかじゃない?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

本題のコードの話だけど、これをwebpにする必要ある…?

Copy link
Contributor

@mei23 mei23 Dec 24, 2022

Choose a reason for hiding this comment

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

本題のコードの話だけど、これをwebpにする必要ある…?

他のサムネがWebP化されてたからここは揃えないのかなって思ったのだわ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment