<< 前のページ | 次のページ >>

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スキャンした書籍や書類の余白をImageMagickで除去する

-trim, -fuzz

そういう都合のいいオプションはないものかと調べてみると、 -trim というのが見つかりました。

convert -trim a.png a-out.png
a.png

//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-a.png

a-out.png

//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-a-out.png


ただし、 -trim オプションは「角のピクセルと同じ色」を除去するようで、 紙の色ムラ・染みなどノイズが混じっていると上手く除去できません。

convert -trim b.png b-out.png
b.png

//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-b.png

b-out.png

//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-b-out.png

convert -trim c.png c-out.png
c.png
//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-c.png
c-out.png
//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-c-out.png

そこらへんも適当にうまいことやってくれよーと思うわけですが、 なんと大変都合の良いことに -fuzz というオプションがあるんですね。

-trim に添えて -fuzz 50% などと指定してやります。

convert -fuzz 50% -trim b.png b-out2.png
b.png

//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-b.png

b-out2.png

//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-b-out2.png

すばらしい。


↓ パラメータをいじるとこんな感じで除去の度合いが変化します。

除去しない 0% ←→ 100% 強く除去する

スキャンした紙を加工する

以下、紙からスキャンした場合を想定した例です。

スキャンした画像 original.jpg

//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-original.jpg


上記と同じように fuzz + trim

convert -fuzz 50% -trim original.jpg out-1.jpg
out-1.jpg

//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-out-1.jpg


パーセント指定を大きくしすぎると 除去しなくていい部分(文字の一部)まで削れてしまいます。

convert -fuzz 70% -trim original.jpg out-2.jpg
out-2.jpg

//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-out-2.jpg


せっかくなのでレベル補正しましょうか。

convert -level 0%,75%,0.8 -fuzz 50% -trim original.jpg out-3.jpg
out-3.jpg

//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-out-3.jpg


さらに固定幅の余白を付けたい場合は -border を使います。

convert -level 0%,75%,0.8 -fuzz 50% -trim \
  -bordercolor '#ffffff' -border 10%x10% \
  original.jpg out-4.jpg
out-4.jpg

//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-out-4.jpg


固定幅の余白を付けるのではなく できあがりの画像サイズを指定して中央に配置したい場合、 -border を使う代わりに次の2つの処理を組み合わせます。

(1) 白で塗りつぶした200x100ピクセルの画像を作成:

convert -size 200x100 xc:white out.jpg

(2) 下敷きとなる画像(sita.jpg) の上にそれより小さな画像(ue.jpg)を重ねる。 配置は上下左右の中央:

convert sita.jpg ue.jpg -gravity center -composite out.jpg

全部一緒に組み合わせるとこうなります。

convert \
  \( -size 320x400 xc:white \) \
  \( -level 0%,75%,0.8 -fuzz 50% -trim original.jpg \) \
  -gravity center -composite out-5.jpg
original.jpg

//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-original.jpg

out-5.jpg

//blog-imgs-45-origin.fc2.com/h/a/r/haraita9283/im-trim-paper-out-5.jpg

分かりにくい場合は無理に繋げなくても中間ファイルを作って段階ごとに処理すれば良いかと思います。

参考

ImageMagick逆引きコマンドリファレンス
ImageMagick逆引きコマンドリファレンスクーガー株式会社 石井 敦

インプレスジャパン 2008-11-28
売り上げランキング : 426384


Amazonで詳しく見る
by G-Tools
「自炊」のすすめ 電子書籍「自炊」完全マニュアル
「自炊」のすすめ 電子書籍「自炊」完全マニュアル
インプレスジャパン 2011-07-22
売り上げランキング : 21130


Amazonで詳しく見る
by G-Tools
電子ブック自炊完全マニュアル
電子ブック自炊完全マニュアル戸田 覚

東洋経済新報社 2010-12-03
売り上げランキング : 67122


Amazonで詳しく見る
by G-Tools

一定時間だけ指定範囲をハイライトする Emacs Lisp

一時的に指定範囲をハイライトするちょっとした Emacs Lisp を作ってみました。 ハイライトした後、一定時間後にハイライト表示が自動的に消えます。

volatile-highlight.el ― Gist


ハイライトしたい範囲の開始ポイントと終了ポイントを指定すると 一時的に指定範囲をハイライトする。 ハイライトする時間はデフォルトは 0.1秒なので、一瞬キラっとする感じ。


;; require する
(require 'volatile-highlight)

;; 使う
(volatile-highlight 1 10) ; 開始位置、終了位置
(volatile-highlight 1 10 2) ; 開始位置、終了位置、ハイライトさせる時間(秒)

ハイライトに使っているフェイスは volatile-highlight-face で、たとえば背景色を変えたい場合は


(set-face-background 'volatile-highlight-face "#ff8")

のように指定する。

デフォルトのハイライト持続時間を変更したい場合は volatile-highlight:default-duration-sec に秒数をセットする。


(setq volatile-highlight:default-duration-sec 10)

eval-defun または eval-last-sexp して一瞬キラッとさせたい場合の例:


(require 'thingatpt) ; for beginning-of-sexp

(defadvice eval-defun
  (after blink-after-eval-defun activate)
  (let (beg end)
    (save-excursion
      (end-of-defun) (forward-char -1)
      (setq end (point))
      (beginning-of-defun)
      (setq beg (point)))
    (volatile-highlight beg end 0.2)))
(ad-activate 'eval-defun)

(defadvice eval-last-sexp
  (after blink-after-eval-last-sexp activate)
  (let (beg end)
    (save-excursion
      (setq end (point))
      (beginning-of-sexp)
      (setq beg (point)))
    (volatile-highlight beg end 0.2)))
(ad-activate 'eval-last-sexp)

追記 2011-10-26

修正しました。変更点は以下の通り。

  • 複数の箇所を同時にハイライトできるようにした
  • volatile-highlight の3番目の引数で持続時間を指定できるようにした(optional)
  • 変数名などを修正

関連記事

参考

DbUnit メモ

基本的なこと

代表的な(?)使い方

- テーブルのレコード数を期待値と比較 … getRowCount
- テーブルの特定の行・列にある値を期待値と比較 … getValue
- テーブル同士(DBから取得したものとあらかじめ用意した期待値)を比較 … assertEquals
- データセット同士(DBから取得したものとあらかじめ用意した期待値)を比較 … assertEquals

データセットとテーブル

データセット(dataset)は複数のテーブルを持てる。

データセットオブジェクトは
- DB
- XMLファイル
- xlsファイル
から生成できる。
(サードパーティの(DbUnit公式ではない)ライブラリとして
JSON や YAML を利用するものもあるようです)

次の XML では、1つのデータセットに
MEMBERS と ITEMS という2つのテーブルが含まれている。

<?xml version='1.0' encoding='UTF-8'?>
<dataset>
  <MEMBERS ID="1" NAME="ミネア" />
  <MEMBERS ID="2" NAME="マーニャ" />
  <ITEMS ID="1" NAME="ぬののふく" />
  <ITEMS ID="2" NAME="ひのきのぼう" />
</dataset>
xls の場合、ブック(ファイル) が dataset に、シートがテーブルに対応する。

Ubuntu 11.04でのTomcat 6.0のインストール(help.ubuntu.comのドキュメント日本語訳)

もともとは tomcat6-user 周辺のことを調べていて help.ubuntu.com のドキュメントにたどり着いたのですが、せっかくなのでページごと訳してみました。 素人翻訳なのでおかしな部分があるかもしれません。 訳の正確さについては無保証です。

波括弧{}の中は訳注や推測・憶測も混じった補足などです。

原文: https://help.ubuntu.com/11.04/serverguide/C/tomcat.html

Apache Tomcat

Apache Tomcat は、 Javaサーブレットと JSP によるウェブアプリケーションを提供するコンテナです。

Ubuntu の Tomcat 6.0 パッケージは2つの異なる実行方法をサポートしています。 クラシックな方法でインストールした場合は 「システムにつき一つのインスタンス」という形になり、 unprivileged な{rootとは別の、という程度の意味?}ユーザー tomcat6 {の権限}で{OSの}起動時に起動されます。 一方、自身のユーザー権限でプライベートなインスタンスをデプロイすることもでき、 この場合は自分で起動・停止しなければなりません。 この2番目の方法は、複数のユーザがそれぞれ自身の Tomcat インスタンスでテストを行う必要がある開発サーバのコンテキストで特に有用です。

システムワイドなインストール

Tomcat サーバをインストールするには、 端末のプロンプトで次のコマンドを入力します:

sudo apt-get install tomcat6 

これにより、Tomcatサーバと、デフォルトの ROOT ウェブアプリ (デフォルトで最低限の "It works" を表示するもの)がインストールされます。

設定

設定ファイルは /etc/tomcat6 にあります。 共通の設定がほんの少しだけここに記述されるでしょう。 詳細については Tomcat 6.0 ドキュメンテーション を参照してください。

デフォルトポートの変更

デフォルトでは、 Tomcat 6.0 は HTTPコネクタ 8080、 AJPコネクタ 8009 で動作します。 システムの他のサーバとの競合を避けるため、 これらのデフォルトポートは変更しておくとよいでしょう。 その場合、 /etc/tomcat6/server.xml の次の部分を修正します。

    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
    ...
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 

使用する JVM を変更する

デフォルトでは、Tomcat はなるべく OpenJDK-6 を使い、 {それがだめなら}次に Sun の JVM を試し、 {それがだめなら}他の JVM を試します。 複数の JVM がインストールされている場合、どのJVMを使うべきかを /etc/default/tomcat6 内の JAVA_HOME で指定します:

JAVA_HOME=/usr/lib/jvm/java-6-sun 

ユーザとロールを宣言する

サーブレットコンテナ内でユーザ名、パスワード、ロール(グループ)を定義できます。 Tomcat 6.0 では、これを /etc/tomcat6/tomcat-users.xml で設定します:

    <role rolename="admin"/>
    <user username="tomcat" password="s3cret" roles="admin"/> 

Tomcat の標準ウェブアプリを使う

Tomcat は ドキュメンテーション・管理・デモ用のウェブアプリと一緒にリリースされています。

Tomcat ドキュメンテーション

tomcat6-docs パッケージは Tomcat 6.0 のドキュメンテーションを含んでおり、 ウェブアプリとしてパッケージされています。 デフォルトでは http://yourserver:8080/docs にアクセスすることで閲覧できます。 次のコマンドでインストールできます:

sudo apt-get install tomcat6-docs 

管理者用ウェブアプリ

tomcat6-admin は2つのウェブアプリを含んでいます。 ウェブインターフェースを使って Tomcat サーバを管理できます。 次のコマンドでインストールできます:

sudo apt-get install tomcat6-admin 

1つ目は manager ウェブアプリです。 http://yourserver:8080/manager/html からアクセスできます。 主に、サーバの状態把握とウェブアプリの再起動に使われます。

注意: デフォルトでは、manager アプリケーションへのアクセスはブロックされています。 ロールが "manager" であるユーザをあらかじめ /etc/tomcat6/tomcat-users.xml で定義しておく必要があります。

2つ目は host-manager ウェブアプリで、 デフォルトでは http://yourserver:8080/host-manager/html からアクセスできます。 このウェブアプリを使うことで仮想ホストを動的に生成することができます。

注意: デフォルトでは、 host-manager アプリへのアクセスはブロックされています。 ロールが "admin" であるユーザをあらかじめ /etc/tomcat6/tomcat-users.xml で定義しておく必要があります。

セキュリティ上の理由から、 ユーザ tomcat6 はデフォルトでは /etc/tomcat6 への書き込みができません。 これらの管理者用ウェブアプリ(アプリケーションのデプロイ、仮想ホスト生成) で使われるいくつかの機能では、 このディレクトリへの書き込みが必要となります。 それらの機能を使いたければ、 tomcat6 グループのユーザに必要な権限を与えるために次のコマンドを実行してください:

    sudo chgrp -R tomcat6 /etc/tomcat6
    sudo chmod -R g+w /etc/tomcat6 

Tomcat サンプル・アプリケーション

tomcat6-examples パッケージは、 サーブレットと JSP 機能をテストないしデモするために使える 2つのウェブアプリを含み、 デフォルトでは http://yourserver:8080/examples からアクセスできます。 次のコマンドでインストールできます:

sudo apt-get install tomcat6-examples 

プライベートなインスタンスを使う

Tomcat は開発とテストにおいてヘビーに使われますが、 そのとき、単一のシステムワイドなインスタンスでは、 複数のユーザの要求を満たすことができません。 Ubuntu の Tomcat 6.0 パッケージには、 あなた自身のユーザ指向なインスタンスのデプロイを助けるツールが付属しています。

注意: 異なる TCP ポートを割り当てていれば、 システムワイドなインスタンスとプライベートなインスタンスを同時に動作させることができます。

プライベートインスタンスのサポートをインストール

次のコマンドを実行すると、 プライベート・インスタンスの使用に必要なものがインストールできます:

sudo apt-get install tomcat6-user 

プライベート・インスタンスの生成

プライベート・インスタンス用のディレクトリを作成するには、次のコマンドを実行します:

tomcat6-instance-create my-instance 

このコマンドにより my-instance ディレクトリが新たに作成され、 その中に必要なサブディレクトリとスクリプトが配置されます。 たとえば、共通ライブラリはサブディレクトリ lib/ に置き、 あなたのウェブアプリをサブディレクトリ webapps/ にデプロイします。 デフォルトではデプロイされているウェブアプリはありません。

プライベート・インスタンスの設定

プライベート・インスタンスのための Tomcat のクラシックな設定ファイルが、 サブディレクトリ conf/ 内にあることに気付くでしょう。 たとえば、実行中の他のインスタンスとの競合を避けるためにプライベート・インスタンスで使うポートを変更したい場合、 conf/server.xml を編集する必要があります。

プライベート・インスタンスの起動・停止

プライベート・インスタンスを起動するには、 次のコマンドを実行します (プライベート・インスタンスが my-instance に置かれていることを仮定):

my-instance/bin/startup.sh 

注意: 何かエラーが出たら、サブディレクトリ logs/ をチェックしましょう。 java.net.BindException: Address already in use<null>:8080 というエラーが出ていたら、使おうとしていたポートがすでに使用されていますので、ポート指定を変更しなければいけません。

プライベート・インスタンスを停止するには、 次のコマンドを実行します (プライベート・インスタンスが my-instance に置かれている場合):

my-instance/bin/shutdown.sh 

参考資料

Creative Commons License
This work by Ubuntu documentation team (original English text) and sonota (Japanese translation) is licensed under a Creative Commons Attribution ShareAlike 3.0 Unported License.
Based on a work at help.ubuntu.com.

メモ

might want to

複数インスタンスの使用については 「CATALINA_BASE インスタンス 複数」で検索する。

Java の切り替えは sudo update-alternatives --config java で。

ちなみに、10.04(LTS)のドキュメントと比較してみましたが、変更点は何もありませんでした。

参考(外部リンク)

関連書籍

Tomcatハンドブック 第2版
Tomcatハンドブック 第2版Jason Brittain Ian F. Darwin 村上 雅章

オライリージャパン 2008-11-21
売り上げランキング : 189524


Amazonで詳しく見る
by G-Tools
Jakarta Tomcatエキスパートガイド―Webアプリケーションのための環境構築
Jakarta Tomcatエキスパートガイド―Webアプリケーションのための環境構築アミツト・バコレ 中川 和夫 Ja-Jakarta

ソフトバンククリエイティブ 2003-08
売り上げランキング : 208319


Amazonで詳しく見る
by G-Tools
Tomcat実践アプリケーションサーバ構築―Servlet、JSPを使いこなす
Tomcat実践アプリケーションサーバ構築―Servlet、JSPを使いこなす糸魚川 茂夫

アイクリエイティブ 2001-12
売り上げランキング : 709491


Amazonで詳しく見る
by G-Tools
テーマ:Linux - ジャンル:コンピュータ

Yapra: hAtomまたはユーザ定義XPathを使ってウェブページをフィードに変換するプラグイン

表題の通りです。 再発明くさいのですが、他のプラグインから呼び出して使うことを想定して作っています

単体でも使えなくはないです。RSS::save に渡せばフィードとして保存できたりします。

ダウンロード

https://gist.github.com/raw/824665/2fcfd878b2cfd5f8e50aab97282c537213bbe453/extract.rb

{class base plugin dir}/yapra/plugin/feed/extract.rb として保存してください。

コード


Yapra メモ … その他の Yapra 関連記事についてはこっちにまとめてあります



** ホームに戻る

<< 前のページ | 次のページ >>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。