堕天使の煉獄
2026-02
02
22:16:41
ほげぇぇ
ついに1月中には終わらなかったな。
書庫内の画像をなんやかんやするツールアプデ開発。
でもまあ、ドン詰まってた部分はようやく解決出来そうなので、次の段階に進めてはいるのですが。
ファイルリストへの編集(助長なフォルダ除去とフィルタリング、ファイル名の桁揃え等)と、画像変換の部分を以前は全部まとめてたのを分離して、見通しを良くする感じに。
そして、書庫ファイル毎に個別に編集設定を設定しやすい感じに。
んでもちょっとまた新しい問題が出てたりも。
画像編集処理の設定って、優先順位とかあるんですよね。
例えば、トリミングは上下左右ピクセル単位で切り取る幅を指定するのだけども、その処理の前に画像の拡大縮小をしちゃったら駄目なのはわかりますよね。
回転とかも、180度とか上下反転だといいけど、90度とかだと画像の縦と横の幅も入れ替わってしまう。
グレースケール化なんかは、速度的には縮小したあとでやったほうが軽いけど、縮小前にやったほうが高品質(あんまそこまで変わらないけどw)で、例えばみんなアイコンサイズにしちゃうみたいな用途だと、品質とか気にするほどでもないので速度重視にしたい…なんてケースも?
とか思うと、優先順位も設定できる方がいいのかなぁとか。
そうなると、各編集設定自体をオブジェクト化して、編集リストに登録していく。
処理はリスト順で実行される。
みたいな感じがいいのかなぁ。
とか思うものの、大体ほぼ優先順位なんて固定なんだよなとおもうと、メンテが面倒になるだけじゃないかなとか思ったりもする。
そして、新機能として、範囲指定の塗りつぶし機能なんかもつけたいなとTODOメモに残ってたのだけども。
スキャンした画像の一部に、どっからか紛れ込んだチン毛を見苦しいので塗りつぶして除去したいとかできる感じの(ぉ
が、用途的には一画像に1矩形範囲だけではなく、複数登録型にしたいよな。
そうなると、全部の設定が登録型のほうが一貫性ある感じにも?
それか固定リスト+追加処理リストで、固定リストの前と後の2つのリストに追加できる形とか?
んんーやっぱ全部登録型のがいいのか?
あんまし複雑化したくないなぁ。
なんてところでちょっと考え中。
そこでちょっと転進。
そろそろ書庫に出力周りも作って行かないとなというところで、旧版はzip書庫の読み込みも書き出しも自前で読み込んでたのですが、今回は7zip使うことでzip以外の書庫にも対応できるようになったのだけども、出力はどうしようかなと。
utf8フラグ周りとか、7zipはわりと自動判別に頼ってたり、そもそもzip専用のライブラリではないので、そのへんちょっと融通聞かないところあったりするので、zip書庫の書き出しは自前でやるかなと思ってたのだけども。
でも一度7zipのライブラリの方の書庫作成機能もどんなもんか試してみたいなという気持ちもあったので、ちょっと試してみることに。
現状はzip出力オンリーだけど、7z出力もやりたくなること有るかもしれないし?
なにげに今回、googleのAIの「Gemini」使ってみたんだけど、こりゃ便利だなと。
自分でワード打ち込んでGoogle検索するよりは明確に知りたい情報出てくるので、かなり時間短縮になりそうで今はこういう時代なのかーと(ぉ
でもまあ、相変わらずたまに嘘吐くのはAIの泣き所だなーとw
書き出し用のコールバック周りで
streamSpec->Open(...)
とかのコード吐くんだけど、そんな関数ねぇよって怒られて
7zipSDKのサンプル見ると
streamSpec->Create_ALWAYS(...)
streamSpec->Create_NEW(...)
のどっちか使え(NEWは同名のファイルがすでにあると失敗、ALWAYSは問答無用で上書き)
とあるので書き換えたらちゃんと出来たりで。
あと、Googleの検索結果から主に生成してる? ので、基本出てくるコードが結構古いSDKのコードだったりする。
ほんの数年前の更新で変わった部分とかが、変わる前のやつが出てきたりするので。
(旧)MY_UNKNOWN_IMP1 → (新)Z7_COM_UNKNOWN_IMP_1
みたいな。
なので、そのままコピペして~てのだけだと無理だろうなこれ。
今回のような外部のライブラリなんかだと、ライブラリ自体の理解もある程度無いと、まず何処が嘘吐かれてるのかも判らないし。
そのへんまだまだAIに丸投げとかは無理そうだなこれ。
……んで、とりあえず大体出来たっぽいんだけども、最後の書き出す所で、なんか書庫内に含めるファイルサイズの全体の総サイズを要求されてる部分があるんですよね。
処理の流れとしては、元書庫ファイルがあって、そこからファイル名とかフォルダ構成とか編集して、画像をサイズ揃えたりとかフォーマット揃えたりとか色々加工して、新しい非圧縮のzipに書き出し。
っていうツールなんだけども。
画像を書庫から読み込んで、新しい書庫に処理後のファイルを1つずつ書き出し……ファイルストリームで書き出すだけだから簡単だろ。
とおもってたんですけど、件の全体のファイルサイズを先に要求されるんですよね。
画像変換すりゃ当然ファイルサイズも変わるので、処理前に全体のサイズなんて分かるわけ無いじゃんっていう。
AIが吐き出したコードだと
struct StreamSource {
QString fileNameInZip;
QByteArray data;
qint64 size;
};
QList m_files;
みたいなのを放り込んでるんですよね
つまり、変換後の画像ファイルすべてをオンメモリで一旦持てとw
そりゃ無茶やろと言ってみたら、AIさんも「確かにそのとおりです!」とか返答したりしてw
んで解決法はというと、在るにはあるようなのですが
zipフォーマットのData Descriptor形式ってのを使わないといけないらしい。
ファイルサイズを後から追加するタイプで、書庫内ファイル毎の個別ヘッダのファイルサイズの項目とかは0になって、別項目のData Descriptorフィールドにファイルサイズが記述される感じのやつですね。
わりと書庫系ツールによっては非対応だったりする代物なので、あんまり使いたくない奴。
そして、何でそんなんになっているかといえば、「7Zipライブラリの仕様」だということらしい。
つまるところ、zip専用のライブラリではないので、zip専用の仕様には合わせてくれないということのようです。
しょぼーん。
結局、zip書庫の書き出しは結局自前でやる感じになりそうですw
まあ、すでに以前自分で書いたのがあるので、書き直すだけなんですけどね。
でもまあ結構昔に書いたのと、その頃はまだzipフォーマットを調べながら書いてたやつなので、結構無駄が多いコードだったりするので、そこそこ骨が折れそう。
あとzipフォーマットも、もう一度思い出さないとなw
んまあ、7zipだと、文字コードとか自動判別してるところとか多いので、そのへん自前だと明確にコード指定して書けるので、変な見つけにくいバグとかに巻き込まれにくいというのはメリットかも。
あとちょっと気になったのが、7zipのSDKで、kpidIsUtf8っていう定義が見当たらない問題。
utf8フラグを設定するのに使うやつなんだけど、これまたAIさんに聞いてみた所、SDKのバージョンとかによってあったりなかったりするらしい。
んでこれもZip特有の設定なので、7zipのSDK使ってZipも扱うサードパーティ製のライブラリなんかで慣例的に使われてるのが「kpidIsUtf8」という定義らしいとのこと。
んーやっぱ端から出力はzip書庫決め打ちみたいなことしてると、こういうところで齟齬がでるんだなぁと。
統合アーカイバシリーズなんかも、インターフェースを統一するために、フォーマット固有の設定周りでどないすんねんみたいなのが犠牲になってる部分多かった記憶あるもんな。
そんな感じで、今日はほとんどAIさんと会話してるだけでほぼ終わった(ぉ
書庫内の画像をなんやかんやするツールアプデ開発。
でもまあ、ドン詰まってた部分はようやく解決出来そうなので、次の段階に進めてはいるのですが。
ファイルリストへの編集(助長なフォルダ除去とフィルタリング、ファイル名の桁揃え等)と、画像変換の部分を以前は全部まとめてたのを分離して、見通しを良くする感じに。
そして、書庫ファイル毎に個別に編集設定を設定しやすい感じに。
んでもちょっとまた新しい問題が出てたりも。
画像編集処理の設定って、優先順位とかあるんですよね。
例えば、トリミングは上下左右ピクセル単位で切り取る幅を指定するのだけども、その処理の前に画像の拡大縮小をしちゃったら駄目なのはわかりますよね。
回転とかも、180度とか上下反転だといいけど、90度とかだと画像の縦と横の幅も入れ替わってしまう。
グレースケール化なんかは、速度的には縮小したあとでやったほうが軽いけど、縮小前にやったほうが高品質(あんまそこまで変わらないけどw)で、例えばみんなアイコンサイズにしちゃうみたいな用途だと、品質とか気にするほどでもないので速度重視にしたい…なんてケースも?
とか思うと、優先順位も設定できる方がいいのかなぁとか。
そうなると、各編集設定自体をオブジェクト化して、編集リストに登録していく。
処理はリスト順で実行される。
みたいな感じがいいのかなぁ。
とか思うものの、大体ほぼ優先順位なんて固定なんだよなとおもうと、メンテが面倒になるだけじゃないかなとか思ったりもする。
そして、新機能として、範囲指定の塗りつぶし機能なんかもつけたいなとTODOメモに残ってたのだけども。
スキャンした画像の一部に、どっからか紛れ込んだチン毛を見苦しいので塗りつぶして除去したいとかできる感じの(ぉ
が、用途的には一画像に1矩形範囲だけではなく、複数登録型にしたいよな。
そうなると、全部の設定が登録型のほうが一貫性ある感じにも?
それか固定リスト+追加処理リストで、固定リストの前と後の2つのリストに追加できる形とか?
んんーやっぱ全部登録型のがいいのか?
あんまし複雑化したくないなぁ。
なんてところでちょっと考え中。
そこでちょっと転進。
そろそろ書庫に出力周りも作って行かないとなというところで、旧版はzip書庫の読み込みも書き出しも自前で読み込んでたのですが、今回は7zip使うことでzip以外の書庫にも対応できるようになったのだけども、出力はどうしようかなと。
utf8フラグ周りとか、7zipはわりと自動判別に頼ってたり、そもそもzip専用のライブラリではないので、そのへんちょっと融通聞かないところあったりするので、zip書庫の書き出しは自前でやるかなと思ってたのだけども。
でも一度7zipのライブラリの方の書庫作成機能もどんなもんか試してみたいなという気持ちもあったので、ちょっと試してみることに。
現状はzip出力オンリーだけど、7z出力もやりたくなること有るかもしれないし?
なにげに今回、googleのAIの「Gemini」使ってみたんだけど、こりゃ便利だなと。
自分でワード打ち込んでGoogle検索するよりは明確に知りたい情報出てくるので、かなり時間短縮になりそうで今はこういう時代なのかーと(ぉ
でもまあ、相変わらずたまに嘘吐くのはAIの泣き所だなーとw
書き出し用のコールバック周りで
streamSpec->Open(...)
とかのコード吐くんだけど、そんな関数ねぇよって怒られて
7zipSDKのサンプル見ると
streamSpec->Create_ALWAYS(...)
streamSpec->Create_NEW(...)
のどっちか使え(NEWは同名のファイルがすでにあると失敗、ALWAYSは問答無用で上書き)
とあるので書き換えたらちゃんと出来たりで。
あと、Googleの検索結果から主に生成してる? ので、基本出てくるコードが結構古いSDKのコードだったりする。
ほんの数年前の更新で変わった部分とかが、変わる前のやつが出てきたりするので。
(旧)MY_UNKNOWN_IMP1 → (新)Z7_COM_UNKNOWN_IMP_1
みたいな。
なので、そのままコピペして~てのだけだと無理だろうなこれ。
今回のような外部のライブラリなんかだと、ライブラリ自体の理解もある程度無いと、まず何処が嘘吐かれてるのかも判らないし。
そのへんまだまだAIに丸投げとかは無理そうだなこれ。
……んで、とりあえず大体出来たっぽいんだけども、最後の書き出す所で、なんか書庫内に含めるファイルサイズの全体の総サイズを要求されてる部分があるんですよね。
処理の流れとしては、元書庫ファイルがあって、そこからファイル名とかフォルダ構成とか編集して、画像をサイズ揃えたりとかフォーマット揃えたりとか色々加工して、新しい非圧縮のzipに書き出し。
っていうツールなんだけども。
画像を書庫から読み込んで、新しい書庫に処理後のファイルを1つずつ書き出し……ファイルストリームで書き出すだけだから簡単だろ。
とおもってたんですけど、件の全体のファイルサイズを先に要求されるんですよね。
画像変換すりゃ当然ファイルサイズも変わるので、処理前に全体のサイズなんて分かるわけ無いじゃんっていう。
AIが吐き出したコードだと
struct StreamSource {
QString fileNameInZip;
QByteArray data;
qint64 size;
};
QList
みたいなのを放り込んでるんですよね
つまり、変換後の画像ファイルすべてをオンメモリで一旦持てとw
そりゃ無茶やろと言ってみたら、AIさんも「確かにそのとおりです!」とか返答したりしてw
んで解決法はというと、在るにはあるようなのですが
zipフォーマットのData Descriptor形式ってのを使わないといけないらしい。
ファイルサイズを後から追加するタイプで、書庫内ファイル毎の個別ヘッダのファイルサイズの項目とかは0になって、別項目のData Descriptorフィールドにファイルサイズが記述される感じのやつですね。
わりと書庫系ツールによっては非対応だったりする代物なので、あんまり使いたくない奴。
そして、何でそんなんになっているかといえば、「7Zipライブラリの仕様」だということらしい。
つまるところ、zip専用のライブラリではないので、zip専用の仕様には合わせてくれないということのようです。
しょぼーん。
結局、zip書庫の書き出しは結局自前でやる感じになりそうですw
まあ、すでに以前自分で書いたのがあるので、書き直すだけなんですけどね。
でもまあ結構昔に書いたのと、その頃はまだzipフォーマットを調べながら書いてたやつなので、結構無駄が多いコードだったりするので、そこそこ骨が折れそう。
あとzipフォーマットも、もう一度思い出さないとなw
んまあ、7zipだと、文字コードとか自動判別してるところとか多いので、そのへん自前だと明確にコード指定して書けるので、変な見つけにくいバグとかに巻き込まれにくいというのはメリットかも。
あとちょっと気になったのが、7zipのSDKで、kpidIsUtf8っていう定義が見当たらない問題。
utf8フラグを設定するのに使うやつなんだけど、これまたAIさんに聞いてみた所、SDKのバージョンとかによってあったりなかったりするらしい。
んでこれもZip特有の設定なので、7zipのSDK使ってZipも扱うサードパーティ製のライブラリなんかで慣例的に使われてるのが「kpidIsUtf8」という定義らしいとのこと。
んーやっぱ端から出力はzip書庫決め打ちみたいなことしてると、こういうところで齟齬がでるんだなぁと。
統合アーカイバシリーズなんかも、インターフェースを統一するために、フォーマット固有の設定周りでどないすんねんみたいなのが犠牲になってる部分多かった記憶あるもんな。
そんな感じで、今日はほとんどAIさんと会話してるだけでほぼ終わった(ぉ
Sun
Mon
Tue
Wed
Thu
Fri
Sat
01
02
■
■
ほげぇぇ
03
04
05
06
07
08
■
■
新サーバ移行してみた
09
10
11
[建国記念の日]
12
13
14
15
16
17
18
■
■
ぷち工作
19
20
21
22
23
[天皇誕生日]
24
25
26
27
28
total:2207867 t:1596 y:485
■記事タイトル■
■年度別リスト■
2026年
2026年12月(0)2026年11月(0)
2026年10月(0)
2026年09月(0)
2026年08月(0)
2026年07月(0)
2026年06月(0)
2026年05月(0)
2026年04月(0)
2026年03月(1)
2026年02月(3)
2026年01月(3)
2025年
2025年12月(1)2025年11月(1)
2025年10月(2)
2025年09月(5)
2025年08月(3)
2025年07月(1)
2025年06月(2)
2025年05月(1)
2025年04月(2)
2025年03月(3)
2025年02月(8)
2025年01月(3)
2024年
2024年12月(1)2024年11月(2)
2024年10月(1)
2024年09月(2)
2024年08月(1)
2024年07月(1)
2024年06月(5)
2024年05月(2)
2024年04月(1)
2024年03月(6)
2024年02月(4)
2024年01月(3)
2023年
2023年12月(3)2023年11月(1)
2023年10月(2)
2023年09月(3)
2023年08月(3)
2023年07月(3)
2023年06月(7)
2023年05月(8)
2023年04月(2)
2023年03月(1)
2023年02月(2)
2023年01月(3)
2022年
2022年12月(4)2022年11月(3)
2022年10月(1)
2022年09月(3)
2022年08月(3)
2022年07月(2)
2022年06月(1)
2022年05月(3)
2022年04月(2)
2022年03月(2)
2022年02月(1)
2022年01月(6)
2021年
2021年12月(8)2021年11月(3)
2021年10月(4)
2021年09月(6)
2021年08月(2)
2021年07月(1)
2021年06月(3)
2021年05月(2)
2021年04月(2)
2021年03月(3)
2021年02月(1)
2021年01月(4)
2020年
2020年12月(3)2020年11月(7)
2020年10月(2)
2020年09月(3)
2020年08月(1)
2020年07月(3)
2020年06月(7)
2020年05月(5)
2020年04月(8)
2020年03月(4)
2020年02月(2)
2020年01月(4)
2019年
2019年12月(1)2019年11月(1)
2019年10月(2)
2019年09月(1)
2019年08月(3)
2019年07月(2)
2019年06月(2)
2019年05月(2)
2019年04月(4)
2019年03月(1)
2019年02月(7)
2019年01月(1)
2018年
2018年12月(1)2018年11月(1)
2018年10月(5)
2018年09月(1)
2018年08月(5)
2018年07月(1)
2018年06月(1)
2018年05月(1)
2018年04月(2)
2018年03月(2)
2018年02月(1)
2018年01月(1)
2017年
2017年12月(2)2017年11月(1)
2017年10月(2)
2017年09月(5)
2017年08月(8)
2017年07月(2)
2017年06月(1)
2017年05月(1)
2017年04月(3)
2017年03月(5)
2017年02月(7)
2017年01月(8)
2016年
2016年12月(7)2016年11月(2)
2016年10月(3)
2016年09月(7)
2016年08月(8)
2016年07月(10)
2016年06月(17)
2016年05月(6)
2016年04月(8)
2016年03月(10)
2016年02月(5)
2016年01月(10)
2015年
2015年12月(7)2015年11月(7)
2015年10月(13)
2015年09月(7)
2015年08月(7)
2015年07月(5)
2015年06月(4)
2015年05月(5)
2015年04月(2)
2015年03月(4)
2015年02月(1)
2015年01月(7)
2014年
2014年12月(12)2014年11月(8)
2014年10月(4)
2014年09月(6)
2014年08月(7)
2014年07月(4)
2014年06月(2)
2014年05月(5)
2014年04月(4)
2014年03月(8)
2014年02月(4)
2014年01月(8)
2013年
2013年12月(15)2013年11月(8)
2013年10月(3)
2013年09月(3)
2013年08月(8)
2013年07月(0)
2013年06月(0)
2013年05月(0)
2013年04月(0)
2013年03月(0)
2013年02月(0)
2013年01月(0)
■レス履歴■
■ファイル抽出■
■ワード検索■
堕天使の煉獄
https://rengoku.sakura.ne.jp
管理人
織田霧さくら(oda-x)
E-mail (■を@に)
oda-x■rengoku.sakura.ne.jp