ひまつぶし雑記帖

ImageMagickを使わずperlだけで画像サイズを取得

2015/9/18 [23:52:37] (金) 天気

ハイブリッド型EPUB3を生成するスクリプトのフィックスページ部分で画像サイズを取得する必要があった。
「かんたんEPUB3作成ハイブリッド型EPUB3対応版」https://t2aki.doncha.net/easy_epub-hybrid

定番のImageMagickを使えば簡単なんだけど、ImageMagickが簡単じゃなかった。

WINDOWSではImageMagickのインストールが必要で、さらにActivePerlをインストールしたら一緒にインストールされるppmを使ってImageMagickを使うためのperlのモジュールのインストールが必要。ユーザーさんに別途インストールしてもらうにはちょっとハードルが高い。

macはさらに致命的で、macport でインストールしても、パッケージがあったのでそれをインストールしても、ソースからコンパイルしても、肝腎のJPEG、PNGに対応したものを作れなかった(JPEGはどうにかこうにか、まずJPEGのライブラリをインストールしてmakeしなおしたらjpeg対応版ができたけど、PNGがお手上げ)
JPEGにもPNGにも対応したImageMagickを使ってるひとがいるようなので、わたしのスキル、知識不足。だけど、自分でうまく行ってないものをユーザーさんにインストールしてね、というのは無理すぎる。致命的。


「かんたん」を謳う以上、面倒くさいことはひとつでも増えちゃいけない。

てことで、扱うのはJPEGとPNGだけだし、perlだけで画像サイズを取得する方法を探してgoogleさま。

ありがたいことに、そのまま利用できるサブルーチンなどがいくつかアップされていた。
ただ、そのまま=ブラックボックスのまま使わせてもらうと、あとあとメンテの時などに困るのは火を見るより明らか。猿程度の理解は必要だろうと、画像について、その扱いについて調べたので、備忘録。


・PNGは簡単らしい。

16byte4byte4byte
widthheight


16byte目からの4byteに幅、続く4byteに高さのピクセル数が入っているので決め打ち。

幅高さをネットワークバイトオーダーのビッグエンディアン(32bit)で取得するだけでOK。

・JPEGがちょっと面倒。

JPEGというのは複数のセグメントの塊

マーカー2Bytes
セグメントサイズ2Bytes
セグメント本体可変


画像情報を格納しているのはSOFという種類のセグメント。

マーカーというのは16進数の「FF」がセグメントの開始を表していて、これはどういうセグメントですよという内容を意味するのが「FF」に続く1Byteのバイナリ。
SOFセグメントのマーカーで、JPEGのベースラインは「FF」「C0」プログレッシブは「FF」「C2」ということらしい。

ファイルの先頭から見て「FF」が見つかったらそこからセグメントの開始となる(ファイル先頭と最後にはマーカーだけのセグメントがあるので、先頭の2Bytesは読み飛ばす)

必要なのはJPEGの情報が入ったSOFセグメント。

1)
4Bytes読み込む。
2)
unpackでマーカーとセグメントサイズを取得する。

3)
→マーカーの1byteがFFじゃなかったら終了。
→マーカーの1byteがFFでセグメント内容がC0かC2なら続くセグメント本体を読み込む。
→マーカーの1byteがFFでセグメント内容がC0でもC2でもなかったら、セグメントの本体サイズ分読み飛ばして次のマーカーからの4byteを読む

4)
画像サイズはセグメント本体先頭に入っている。

サンプルの精度画像縦サイズ画像横サイズ
1Byte2Byte2Byte


unpackで取得できる。

てことで、easy_epub-hybridに組みこんだサブルーチンが以下。

スクリプトの中からImageMagickを使うシチュエーションのほとんどが画像サイズの取得なので、これは重宝しそうだ。


jpeg画像について、おそらく間違ってるところがあると思うので、きちんとした知識は以下のサイトへどうぞ。

参考にさせていただいたサイト
https://tohoho-web.com/lng/200003/00030402.htm
https://www2c.biglobe.ne.jp/~osakana/vc/pc/jpegsize.html
https://hp.vector.co.jp/authors/VA032610/JPEGFormat/marker/SOF.htm
https://www.setsuki.com/hsp/ext/segment/sof0.htm
情報、丁寧な解説ありがとうございます。


そういえば。Ingress Lv.15になった。なんかAP稼ぎだけで今イチ面白みがなくなってきたなぁ。
image 

»電子書籍制作代行についてはこちら

愚痴:思ったようには進まないものだ

2012/9/18 [15:45:23] (火) 天気

夏場(ってまだ終わってない)に動いた件が思うように進まず、夏バテもあってげんなり。
7月から始めて8月お盆にはひととおり納品した請負仕事の案件が、9月もこの時期になって、まだ先方作業中。いまデザイナー作業らしい。にしてもなあ、ひとのメールを読んでないのか、理解力読解力なのか、それとも文章力なのか。同じことを何度も聞かれると疲れる。事情・背景を説明しすぎて要点が伝わらなかったか、と思って、用件を箇条書きにしたら、全然怒ってもないのに気分を害したらすみませんと言われたので、また少し考え方・方向性の説明をつけたしてみたり。今さらメールの書き方で悩むとは思わなかった。
直接、対面でその度、べちゃくちゃしゃべって解決&決定した方が早いし確実だった。先方常駐ってワケではない請負仕事、メールでの意思疎通の問題かも知れないけど。決めたことを、後になって・原稿が終わってから先方都合で変更されると困る。え?それってOK出てからやってんのになんでそんなこと言い出す?メールにも書いてたよね?という心配が的中。事後承諾とお詫びのメールをしたんだけど、今後は難しい・厳しい。それに、3ヶ月引っ張られたんでは、他の予定も立たないし、割に合わない。

「小説同人誌Select」を制作するのに使っているソフト、SakuttoBookのバグもまいったなあ。最初、一作品だけしか収録してなくて、作品が追加されたら宣伝・告知もしようとやってたのに、その追加したバージョンからバグが混じって弱り目に祟り目踏んだり蹴ったり。購入したものがなくなってしまうなど致命的なことはないけど、本体の電源OFFもしくは再起動のたびに、アプリが異常終了するので、アプリ削除・再インストールが必要…って、ありえない。
この「小説同人誌Select」は、8月お盆に公開してから、まだ有料コンテンツの販売本数は自分購入分4本を除くと5本程度。でも、無料の本体はたいした露出もないのに週末で30〜40本@1日、平日10〜25本@1日のダウンロードはある。今、収録中の日野裕太郎さん以外の作家さんの追加予定があるので、その時点でバグフィックス、iOS6対応をチェックして、ふたたび、twitterなどで告知作戦をする。(すでに初稿で読ませてもらった追加予定の作品もオススメ。早くいろんなひとに読んでもらいたい)
このアプリが落ち着いて運用できるようになったら、今、進行中の作家さんのほかにも声かけ・募集を始めて(著者印税40%でお願いしてます)こっちを充実させたい。
こっちの開発元はレスポンスが早いので、今週中にはバグ対応を期待できる、かな。
image 

[11/19 16:42:42] 追記。てことでいろいろやっておかないといけません。

アマゾンに並べた電子書籍のリスト
手前味噌だけど、ホラーや青春もの、癒しの物語などオススメできます。短編だと100円からあるので、気楽に読んでみてやってください。


こちらはiPhone電子書籍アプリ 「小説同人誌Select」
https://itunes.apple.com/jp/app/id546230414?mt=8
小説同人誌Selectというこのアプリは無料で、中に有料の小説が収録されてます。無料サンプルもあるので、まずは立ち読み感覚でダウンロードして、気に入ったらその作品を購入してもらえるととてもうれしいです。

»電子書籍制作代行についてはこちら

apacheでネットワークドライブを見る

2009/9/18 [13:55:51] (金) 天気

ハマったんで、メモ。
今まではコマンドラインで整形加工してたので、Sambaでローカルに持ってくればよかった。けど、手順が煩雑だし、コマンドラインを使うのは抵抗のあるひともいるので、CGIにしてしまえ、と。

…ネットワークドライブにあるファイルが見えずに悶絶
あっさり、opendir() で死んでしまう。

apache windows ネットワークドライブ

でグーグルさま詣で。
どうやらユーザー権限が問題になっていて、「管理ツール」→「サービス」で、Apacheを実行しているユーザーを変更すればいい、とのこと。
さっそく、「サービス」→「ログオン」を見ると、デフォルトでは「ローカルシステムアカウント」がApacheを実行しているので、これを「アカウント」に変更(WINDOWSにログオンする自分のアカウントに変更)したら、opendir でネットワークドライブを覗くことができた。やれやれ。
[09/19 14:57:31]
ネットワークドライブには共有名でアクセスする。
opendir(DIR, '//shared/')

 

»電子書籍制作代行についてはこちら

モノクロフィルムもスキャン

2008/9/18 [08:53:14] (木) 天気

EPSON GT-F720。モノクロネガもスキャンし直し。カラーよりラクかもしれない。
48bitカラー、1200dpi、自動露出補正なし。といった基本設定は同じ。一コマずつの操作では、アンシャープマスクのチェックを外し(デフォルトでチェックがはいっていて、いちいち外すのが面倒)レベル補正(ヒストグラム)の両端を少しつめて、出力のトーンカーブをやっぱり少し整えるだけでOKだった、かも。tiffで吐き出される画像を読み込んで自動レベル補正一発のお手軽さ。カラーと違って妙な緑かぶりもないのでこれだけでイイ感じ(ちょっと青がかぶってるような気がするけど)
大人の科学付録のピンホールカメラで撮ったモノクロが柔らかくて面白い。プリントで見るともっと固くてシャープになっていてなんか違うなぁと。
たぶん、プリントの段階での焼きの加減(?)
とはいえ、一本(失敗して写ってないコマもあって)約18枚スキャンするのに40分以上かかるので、平日ヘロヘロ状態で帰ってからやるのはさすがに続かないゼ。

エロ本の編集をやってたころはカメラマンにいろいろ教えてもらったけどまるでなにも覚えてないのがいかにももったいない話だ。

って、朝っぱらから。架線トラブルだとかで、駅構内にひとがあふれ、電車が遅れております、というアナウンスが流れているだけ。雨でじめじめ蒸すし、バスで別路線に向かう途中。やれやれ。

 

»電子書籍制作代行についてはこちら

丸ビルから丸の内

2008/9/18 [01:08:27] (木) 天気

たまたま、休日の月曜に思い立って丸ビルにでかけてみた。んで、そのときの一枚。

image  VQ1005

おもちゃのカメラで撮ったらおもちゃみたいな絵が撮れていた、の図。ですなぁ。ディテールもおもちゃくさく写ってるし。


うー。へろへろだ。とっとと寝よう。

 

»電子書籍制作代行についてはこちら

血迷った

2006/9/18 [19:02:41] (月) 天気

image 特定の環境化の、TEXTAREAで改行コードが飛んでしまう、という現象が取れずどうしたもんかと思いつつ、実機をもってないので検証のしようがない。隔靴掻痒。

3連休でぼーっとしてたこともあって、今日は有楽町ビックカメラにでかけてMac mini MA607J/Aというのを買ってきた74800円也。
ぶっちゃけ、Macって、押しつけがましかったり宗教がかかってたりで、好きじゃない…ていうか嫌いなんだけど、WEBサイトうんぬんとエラソなことをいうには、やはりある程度検証環境を作っておかないといけないなぁ、と自分を納得させてみた。

キーボードとマウスで少し手こずり、ネットワークの設定でちょっと疑問を残したままではあるけどどうやら繋がってくれた(Librettoがデフォルトルーターなんだけど、ここの/etc/hostsにIPを記述しておいたりすると「すでに使われている」と。おそらくmac mini側のネットワークの設定を詳しく見ないといけないっぽい)

んで、肝心の現象。
MacのSafariだとTEXTAREAで改行されない。ソースを表示させると改行されているのに、TEXTAREAでは改行されていないのだ。
どうなってんだろう、とFireFoxをダウンロードしてみてみたら、問題なく改行されている。

…うううむ。これって問題はどこにあるんだろう(お前のスクリプトが悪い、というのはおいといて)

»電子書籍制作代行についてはこちら

profile

profile

 
doncha.net
contact:
»運営者
@t2aki@tokoroten.doncha.net

ところてんx5

2024/4/19 20:13

帰ったら修正入れよう

2024/4/19 20:12

to_poolはちゃんと意図通りにメンションをpoolに保存してるので問題ない。
disp_timelineにcircle判定を入れた時にバグった。mentionはpublicでもcircleでもないのでここで弾かれてる。
mentionは無条件で表示させないとだめだろ

2024/4/19 13:30

うげ。DMを取りこぼしてる

検索
<<2024/09>>
       
1234567
891011121314
15161718192021
22232425262728
2930

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版

[2 Page] »
1 2

TOTAL:2982

2024 (5)
1 (2)
2 (2)
3 (1)
2023 (53)
1 (1)
2 (5)
3 (1)
4 (1)
5 (3)
6 (9)
7 (9)
8 (6)
9 (5)
10 (3)
11 (2)
12 (8)
2022 (16)
1 (1)
3 (2)
6 (2)
7 (1)
8 (4)
9 (2)
10 (1)
11 (2)
12 (1)
2021 (12)
1 (3)
2 (1)
6 (1)
8 (2)
9 (1)
10 (1)
11 (2)
12 (1)
2020 (18)
1 (2)
2 (6)
4 (1)
6 (1)
7 (2)
8 (2)
12 (4)
2019 (17)
1 (3)
2 (4)
3 (2)
4 (2)
5 (1)
6 (1)
8 (1)
10 (1)
12 (2)
2018 (21)
1 (3)
2 (2)
3 (2)
4 (1)
5 (1)
6 (6)
8 (1)
9 (1)
10 (2)
12 (2)
2017 (32)
1 (2)
2 (1)
4 (2)
5 (1)
6 (6)
7 (3)
8 (5)
9 (3)
10 (2)
11 (2)
12 (5)
2016 (41)
1 (5)
2 (5)
3 (2)
4 (3)
5 (4)
6 (6)
7 (2)
8 (2)
9 (3)
10 (1)
11 (4)
12 (4)
2015 (99)
1 (11)
2 (12)
3 (9)
4 (6)
5 (8)
6 (8)
7 (3)
8 (5)
9 (16)
10 (6)
11 (1)
12 (14)
2014 (112)
1 (16)
2 (5)
3 (6)
4 (12)
5 (16)
6 (19)
7 (9)
8 (6)
9 (4)
10 (8)
11 (6)
12 (5)
2013 (145)
1 (24)
2 (15)
3 (18)
4 (23)
5 (14)
6 (11)
7 (7)
8 (11)
9 (5)
10 (4)
11 (6)
12 (7)
2012 (103)
1 (1)
2 (1)
3 (4)
4 (3)
5 (7)
6 (26)
7 (17)
8 (5)
9 (8)
10 (10)
11 (11)
12 (10)
2011 (54)
1 (4)
3 (7)
4 (4)
5 (14)
6 (6)
7 (3)
8 (3)
9 (1)
10 (4)
11 (2)
12 (6)
2010 (70)
1 (12)
2 (7)
3 (6)
4 (6)
5 (3)
6 (10)
7 (6)
8 (4)
9 (3)
10 (4)
11 (3)
12 (6)
2009 (144)
1 (15)
2 (12)
3 (12)
4 (6)
5 (15)
6 (6)
7 (10)
8 (9)
9 (17)
10 (12)
11 (14)
12 (16)
2008 (148)
1 (10)
2 (6)
3 (10)
4 (11)
5 (13)
6 (10)
7 (13)
8 (19)
9 (18)
10 (12)
11 (13)
12 (13)
2007 (106)
1 (7)
2 (5)
3 (3)
4 (7)
5 (5)
6 (9)
7 (8)
8 (13)
9 (18)
10 (11)
11 (8)
12 (12)
2006 (158)
1 (28)
2 (28)
3 (25)
4 (7)
5 (9)
6 (7)
7 (12)
8 (13)
9 (10)
10 (7)
11 (6)
12 (6)
2005 (350)
1 (31)
2 (26)
3 (26)
4 (27)
5 (29)
6 (30)
7 (32)
8 (30)
9 (30)
10 (32)
11 (29)
12 (28)
2004 (292)
1 (24)
2 (24)
3 (29)
4 (27)
5 (28)
6 (25)
7 (26)
8 (24)
9 (12)
10 (19)
11 (26)
12 (28)
2003 (318)
1 (22)
2 (25)
3 (21)
4 (28)
5 (28)
6 (28)
7 (28)
8 (29)
9 (26)
10 (29)
11 (28)
12 (26)
2002 (317)
1 (29)
2 (26)
3 (26)
4 (25)
5 (28)
6 (30)
7 (27)
8 (21)
9 (25)
10 (27)
11 (28)
12 (25)
2001 (277)
1 (17)
2 (21)
3 (23)
4 (20)
5 (31)
6 (18)
7 (26)
8 (25)
9 (29)
10 (19)
11 (24)
12 (24)
2000 (53)
6 (9)
7 (4)
8 (2)
9 (3)
10 (1)
11 (15)
12 (19)
1999 (3)
7 (1)
10 (2)
1998 (18)
9 (9)
10 (7)
11 (2)