POTI改 設置サポート掲示板

NSFW:

[83] PNG→JPEG自動切り替えについて


さとぴあ@管理人 [URL] ID:dd6ca656 23/01/22

Petit Note にはファイルサイズが大きめの時のPNGからJPEGへの自動切り替えをするしないの設定項目がありません。

ただ、この機能はPNGよりJPEGのほうがファイルサイズが小さな時はJPEGにしますという機能ではなく、いくつもの条件が重なった時に動作します。

お絵かき機能を使った画像の場合は
1024*1024バイト(1MB)を超えている時は、PNG画像からJPEG画像への変換を試みて、その結果PNG画像よりJPEG画像のほうが小さくなる時だけJPEGに変換します。
JPEGの劣化率は98です。
かなり画質重視にふったJPEGになります。

運営しているお絵かき掲示板の交流サイトでキャンバスサイズが800x800の時に、PNG画像が1MBを超えてJPEGになった事はまだありません。
(つづきます)

さとぴあ@管理人 [URL] ID:dd6ca656 23/01/22

アップロード画像の時には、1MBではなく800kb以上の時はPNGからJPEGへの変換が試行され、結果的にJPEGのほうが小さくなる時だけ、JPEGになります。

また、お絵かき画像のコメント記入前の状態の時点では、すべてPNG画像です。

しかしながら、サムネイル機能で縮小された時、または画像の縦横のサイズは範囲内でも1MBを超過する場合(たとえばGIF動画でファイルサイズが大きな時)は、
JPEGのサムネイルが作られます。
この時はクリックすれば元のGIFやPNG形式の画像が表示されます。

現時点での仕様はこんな感じです。

POTI-boardでは、PNGからJPEGに変換するファイルサイズの閾値を数値で設定できますので、それと同じ設定項目を追加して、その値を大きくする(例えば5MB)であれば、PNG形式のまますべて投稿が可能になるとは思います…。

さとぴあ@管理人 [URL] ID:dd6ca656 23/01/22

頂いたメールに返信した内容を掲示板にも掲載させていただきます。
>現在、ファイルサイズがPNGよりJPEGのほうが小さくなる場合自動的にJPEGに変換され
>るようになってますが、変換するかどうかが選択できるようになったらなぁ、と。

これについては、下のほうで

>キャンバスサイズが規定より大きなものだけ変換し、小さなものは変換しない、とい
>うようなものでもいいかもしれません。

これは、現時点ですでにそれに近い機能は実装ずみです。
というのも、現時点でお絵かきはファイルサイズ1MBまではPNGのままです。
アップロードは800kbまではPNGのままです。

ただし、サムネイル機能を使う設定にしている場合のサムネイル画像はJPEGです。

いろいろやってみてもJPEGのままだったというご指摘がもしサムネイル画像であれば、
サムネイルを使う設定にしている時点でJPEG画像がサムネイルとして表示されますので、それも排除したいのであればサムネイルを使わない設定にするしかありません。
ただし、サムネイルがJPEG画像であっても、画像をクリックすればPNG画像が表示されますので、投稿されている画像はPNGです。
(つづきます)

さとぴあ@管理人 [URL] ID:dd6ca656 23/01/22

>キャンバスサイズが規定より大きなものだけ変換し、小さなものは変換しない

キャンバス基準ではありませんが、ファイルサイズがおおきければ変換します。
大きくなければ変換しません。
このどのファイルサイズ以上ならJPEGに変換するの箇所を設定可能にする事はできます。
たとえばファイルサイズを5MBまでPNGのままと設定する事ができるようになればPNGからJPEGへの変換はほとんどのケースで行われなくなり、PNG形式のまま投稿される事になります。
しかし、PNGのみになると
JPEG画像になった時にファイルサイズを確認していた最大投稿ファイルサイズが大きくなってしまうため、これまで通っていた画像アップロードが「ファイルサイズが大きすぎます」というエラーになる事があります。
また、PNG形式の2MBの画像が10枚ならべば20MBですので、スマホでアクセスする人のギガはそれだけ消費します。
現時点の仕様で1MB以上のPNG画像はJPEGに変換してファイルサイズを縮小しているのは、1MBより大きな画像は運用上あまりよくないと考えての事です。
そして、お絵かき時に1MBを超えるケースは800x800ではほとんどありません。
ただし、ChickenPaintやklecksでグラデーションを幾層にも重ねたりすると超えてしまう事があるかもしれません。

とはいえPOTI-boardには存在してPetit Noteには無い設定項目になりますので、
PNGで保存されるファイルサイズの最大値の設定項目は作ろうと思います。

3chan. [URL] ID:f0a07246 23/01/22

こんにちは。お世話になります。
こんなに丁寧に教えていただいて恐縮です。

この機能を疑ったのは、アップロードされた画像がぼやけているというご指摘をいただいたためなんですが、結果的に480x480の画像がJPEGで保存されている点しか原因が分からなかったからです。

ご教授いただいた構文2か所を削除して解決いたしました。ありがとうございます!!
弊板では上限750x750、アップロードも1200に設定しましたので、大きなPNG画像をアップしても1200まで縮小されるようなのでファイルサイズに関しては安心です。よくできてますね~♪

また分からないことがあったときにお邪魔してしまうかもしれませんが、よろしくお願いします。
ありがとうございました!^▽^

3chan. [URL] ID:f0a07246 23/01/25

度々お邪魔します。
メールを戴いていたのに気づいていなくてスミマセン。

ファイルサイズの縮小について、閲覧者がスマホでアクセスする場合のギガの消費まで考えが及びませんでした。
最近はかなりの割合でスマホからの閲覧になるでしょうから。また、描く方としても増えているのかもしれませんね。

なので設定は前述のようにPNGで保存されるようにし、一覧はデフォルトのままサムネイルが表示されるようにしました。

ただ、やっぱり分からないのは、なぜJPEGに変換されたのか、です。
私的にはもういいのですが、自分が設定したときの状況を書いておきます。

実験のためにアップロードした画像は700x960pxで460kbほどでした。
もちろんサムネイルではなく、クリックして表示された画像です。
現在の設定では同じ画像が変換されませんでした。

まぁ、私が何か設定を間違えただけかもしれませんが、一応参考までに。
どうも失礼しました~。

さとぴあ@管理人 [URL] ID:dd6ca656 23/01/25

[18] 無題 by さとぴあ@管理人 - Petit Note サンプル掲示板
https://paintbbs.sakura.ne.jp/cgi/neosample/petitnote/?resno=18#1674624261364955
ここで、実際に設置しているPetit Note上で再現実験しましたが、ご指摘の内容は再現できません。
PHPのバージョンによる違いによる掌握できていないバグとかでなければ、こちらで確認できている範囲では、アップロードは800kb、お絵かき機能による投稿は1MB以上のファイルサイズでなければPNGに変換されません。
ただし、一見PNG画像のようにみえる、拡張子が.PNGで中身はJPEG形式のものは、拡張子ではなく中身で判断して拡張子を付け直していますので、test.pngがtest.jpgのように変更される事があります。
これは中身がそもそもJPEG形式だった場合で拡張子を適切に付け直した場合という事になります。
本当は、このファイルで問題が発生した

そのファイルをこちらでも試す。
再現するしない、原因を探すという手順が望ましいです。

さとぴあ@管理人 [URL] ID:dd6ca656 23/01/25

>まぁ、私が何か設定を間違えた

仮になにかしらの改造をしているものだとすると、問題がどこで発生したのかこちらでは把握できませんから、その場合はサポートできません。
こちらとしては報告があれば、問題があるないをそれなりに時間をかけて探す努力をする事になりますので、問題があるのであれば、問題がある。
それは再現性がある、または無い。
更新によって問題が解決した、またはしないという形でのやりとりを希望します。
よろしくお願いします。
改善の努力はしますが、暗黙の了解をふくむ一切の保証は無い事を前提にしたライセンスになっていますので、その点もよろしくお願いします。

3chan. [URL] ID:f0a07246 23/01/25

申し訳ございません。
お絵かき掲示板のノリで気軽に報告してしまいました。
まさかこんなに検証させてしまうとは。
問題は解決しております。保証だなんてとんでもないです。
お手間、お時間とらせてしまい申し訳ございませんでした。
これからもよろしくお願いします。

[HOME / Admin]
Petit Note v1.58.3 Template BASIC
OekakiApp - PaintBBS NEO , Tegaki , Axnos Paint , Klecks , ChickenPaint Be
UseFunction - DynamicPalette , Lightbox