IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ブラザー工業株式会社の特許一覧

<>
  • 特許-プログラム 図1
  • 特許-プログラム 図2
  • 特許-プログラム 図3
  • 特許-プログラム 図4
  • 特許-プログラム 図5
  • 特許-プログラム 図6
  • 特許-プログラム 図7
  • 特許-プログラム 図8
  • 特許-プログラム 図9
  • 特許-プログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-11
(45)【発行日】2023-12-19
(54)【発明の名称】プログラム
(51)【国際特許分類】
   H04N 1/387 20060101AFI20231212BHJP
   H04N 1/00 20060101ALI20231212BHJP
   B41J 21/00 20060101ALI20231212BHJP
   G06F 3/12 20060101ALI20231212BHJP
【FI】
H04N1/387 110
H04N1/00 L
H04N1/00 127B
B41J21/00 Z
G06F3/12 304
G06F3/12 350
【請求項の数】 18
(21)【出願番号】P 2019121041
(22)【出願日】2019-06-28
(65)【公開番号】P2021007204
(43)【公開日】2021-01-21
【審査請求日】2022-05-17
(73)【特許権者】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】100117101
【弁理士】
【氏名又は名称】西木 信夫
(74)【代理人】
【識別番号】100120318
【弁理士】
【氏名又は名称】松田 朋浩
(72)【発明者】
【氏名】李 蕾
(72)【発明者】
【氏名】成田 建樹
(72)【発明者】
【氏名】野尻 弘也
【審査官】橘 高志
(56)【参考文献】
【文献】特開2014-230132(JP,A)
【文献】特開2008-092133(JP,A)
【文献】特開2001-157035(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 1/387
H04N 1/00
B41J 21/00
G06F 3/12
(57)【特許請求の範囲】
【請求項1】
メモリを有する情報処理装置のコンピュータによって実行されるプログラムであって、
複数の画像データを取得する第1取得処理と、
取得した前記画像データが示す取得画像を配置する領域である配置領域のサイズである領域サイズを、外部プログラムから取得する第2取得処理と、
取得した前記取得画像を、前記配置領域に既に配置した前記取得画像である配置済画像に重ならず、かつ、当該配置済画像に対して、前記メモリに記憶された第1配置方向に並べて配置する場合に、配置する前記取得画像が前記配置領域内となるか否かを判断する第1判断処理と、
上記第1判断処理において、配置する前記取得画像が前記配置領域内となると判断したことに基づいて、前記取得画像を前記配置済画像に重ならず、かつ、前記配置済画像に対して前記第1配置方向に並べて配置する第1配置処理と、
前記配置領域に複数の前記配置済画像を配置した配置画像データを生成する生成処理と、を前記コンピュータに実行させるプログラム。
【請求項2】
前記第1判断処理において、配置する前記取得画像が前記配置領域内とならないと判断したことに基づいて、前記取得画像を、前記配置済画像に重ならず、かつ、当該配置済画像に対して、前記メモリに記憶された第2配置方向であって、前記第1配置方向と異なる当該第2配置方向に並べて配置する第2配置処理と、
前記第2配置処理で配置した前記取得画像に対して実行する前記第1判断処理及び前記第1配置処理と、を前記コンピュータにさらに実行させる請求項1に記載のプログラム。
【請求項3】
前記第1判断処理において、配置する前記取得画像が前記配置領域内とならないと判断したことに基づいて、前記取得画像を、前記配置済画像に重ならず、かつ、当該配置済画像に対して、前記メモリに記憶された第2配置方向であって、前記第1配置方向と異なる当該第2配置方向に並べて配置した場合に、配置する前記取得画像が前記配置領域内となるか否かを判断する第2判断処理と、
前記第2判断処理において、配置する前記取得画像が前記配置領域内となると判断したことに基づいて実行する前記第2配置処理と、を前記コンピュータに実行させる請求項2に記載のプログラム。
【請求項4】
前記第1判断処理は、
前記第1配置方向に並べて配置した複数の前記配置済画像の合計サイズであって、当該第1配置方向における合計サイズである第1合計サイズを取得する第1処理と、
取得した前記第1合計サイズと、配置する前記取得画像のサイズであって、前記第1配置方向におけるサイズである第1配置画像サイズと、前記第1配置方向における前記領域サイズのサイズである第1領域サイズと、に基づいて、配置する前記取得画像が前記配置領域内となるか否かを判断する第2処理と、を含む、請求項2または3に記載のプログラム。
【請求項5】
前記第1判断処理は、
前記メモリに記憶された第1離間サイズであって、前記第1配置方向に並べて配置した2つの前記配置済画像間の離間サイズである第1離間サイズと、前記第1配置方向に並べて配置した前記配置済画像の個数と、に基づいて、前記第1離間サイズの合計サイズである第1離間合計サイズを取得する第3処理をさらに含み、
前記第2処理は、前記第1合計サイズと、前記第1配置画像サイズと、前記第1領域サイズと、前記第1離間合計サイズと、に基づいて、配置する前記取得画像が前記配置領域内となるか否かを判断する、請求項4に記載のプログラム。
【請求項6】
前記第2判断処理は、
前記第1配置方向に並べて配置された複数の前記配置済画像のうち、前記第2配置方向におけるサイズである第2ページサイズが最も大きい配置済画像である特定配置済画像の当該第2ページサイズを特定第2ページサイズとして取得する第4処理と、
前記第2配置方向における前記特定第2ページサイズの合計サイズである第2合計サイズを取得する第5処理と、
取得した前記第2合計サイズと、配置する前記取得画像のサイズであって、前記第2配置方向におけるサイズである第2配置画像サイズと、前記第2配置方向における前記領域サイズのサイズである第2領域サイズと、に基づいて、配置する前記取得画像が前記配置領域内となるか否かを判断する第6処理と、を含む、請求項3に記載のプログラム。
【請求項7】
前記第2判断処理は、
前記メモリに記憶された第2離間サイズであって、前記第2配置方向における2つの前記特定配置済画像間の離間サイズである第2離間サイズと、前記第2配置方向における前記特定配置済画像の個数と、に基づいて、前記第2離間サイズの合計サイズである第2離間合計サイズを取得する第7処理をさらに含み、
前記第6処理は、前記第2合計サイズと、前記第2配置画像サイズと、前記第2領域サイズと、前記第2離間合計サイズと、に基づいて、配置する前記取得画像が前記配置領域内となるか否かを判断する、請求項6に記載のプログラム。
【請求項8】
前記第1配置処理は、
最初に取得した前記取得画像を、前記メモリに記憶された基点位置であって、前記配置領域における位置を示す基点位置に基づいて配置する処理を含む、請求項4から7のいずれかに記載のプログラム。
【請求項9】
前記第1配置処理は、
最初に取得した前記取得画像を、前記メモリに記憶された基点位置であって、前記配置領域における位置を示す基点位置に基づいて配置する処理を含み、当該基点位置は、前記第1配置方向における前記配置領域内の位置を示す第1基点位置と、前記第2配置方向における前記配置領域内の位置を示す第2基点位置と、を含み、
前記第2配置処理は、
前記第2配置方向における前記特定配置済画像における端となる位置から前記第2離間サイズだけ離間した位置を第2配置方向における基点位置である第3基点位置とし、当該第3基点位置及び前記第1基点位置に基づいて、前記取得画像を配置する処理を含む、請求項7に記載のプログラム。
【請求項10】
前記第2判断処理において、配置する前記取得画像が前記配置領域内とならないと判断したことに基づいて、配置する前記取得画像を、次の前記配置領域に配置する第3配置処理を前記コンピュータにさらに実行させる、請求項3に記載のプログラム。
【請求項11】
前記第1配置方向を決める配置方向情報を、前記情報処理装置が有するユーザインタフェースを通じて受け付け、受け付けた当該配置方向情報を前記メモリに記憶させる記憶処理を前記コンピュータにさらに実行させる請求項4から10のいずれかに記載のプログラム。
【請求項12】
生成した前記配置画像データを1ファイルデータとして出力する出力処理を前記コンピュータに実行させる請求項4から11のいずれかに記載のプログラム。
【請求項13】
前記情報処理装置が備えるディスプレイに入力画面を表示させる表示処理と、
前記入力画面において前記領域サイズを受け付ける受付処理と、
前記入力画面において入力された前記領域サイズを取得する第3取得処理と、を前記コンピュータに実行させることが可能である請求項4から12のいずれかに記載のプログラム。
【請求項14】
前記第1配置方向における前記取得画像のサイズを示す第1配置画像サイズと、前記第2配置方向における前記取得画像のサイズを示す第2配置画像サイズと、を取得する第4取得処理と、
取得した前記第1配置画像サイズが、前記第3取得処理で取得した前記領域サイズであって、前記第1配置方向における前記領域サイズである第1領域サイズを超えているか否か、及び取得した前記第2配置画像サイズが、前記第3取得処理で取得した前記領域サイズであって、前記第2配置方向における前記領域サイズである第2領域サイズを超えているか否かを判断するサイズ判断処理と、
前記第1配置画像サイズが前記第1領域サイズを超えていると判断したことに基づいて、或いは前記第2配置画像サイズが前記第2領域サイズを超えていると判断したことに基づいて、エラー画面を前記ディスプレイに表示させるエラー表示処理と、を前記コンピュータにさらに実行させる請求項13に記載のプログラム。
【請求項15】
前記第1取得処理は、前記情報処理装置が備える通信インタフェースを通じて当該情報処理装置がスキャナから受信した複数の前記画像データを取得する処理である、請求項1から14のいずれかに記載のプログラム。
【請求項16】
メモリを有する情報処理装置のコンピュータによって実行されるプログラムであって、
複数の画像データを取得する第1取得処理と、
取得した前記画像データが示す画像である取得画像を配置領域に配置する第1配置処理であって、当該配置領域に既に配置した前記取得画像である配置済画像に重ならず、かつ、当該配置済画像に対して、前記メモリに記憶された第1配置方向に並べて前記取得画像を配置する第1配置処理と、
前記配置領域に複数の前記配置済画像を配置した配置画像データを生成する生成処理と、
生成した前記配置画像データに基づいて、前記第1配置方向における当該配置画像データのサイズである配置サイズを算出する算出処理と、
算出した前記配置サイズ及び生成した前記配置画像データを出力する出力処理と、を前記コンピュータに実行させるプログラム。
【請求項17】
前記第1配置処理は、
配置する前記取得画像を、前記メモリに記憶された離間サイズだけ、前記配置済画像から前記第1配置方向において離間させて配置する処理を含む、請求項16に記載のプログラム。
【請求項18】
前記第1配置方向における前記配置領域のサイズである第1領域サイズを外部プログラムから取得する第2取得処理と、
取得した前記取得画像を、前記配置済画像に対して前記第1配置方向に並べて配置する場合に、配置する前記取得画像が前記配置領域内となるか否かを判断する第1判断処理と、
上記第1判断処理において、配置する前記取得画像が前記配置領域内となると判断したことに基づいて実行する前記第1配置処理と、
上記第1判断処理において、配置する前記取得画像が前記配置領域内とならないと判断したことに基づいて、前記取得画像を、前記配置済画像に重ならず、かつ、当該配置済画像に対して、前記メモリに記憶された第2配置方向であって、前記第1配置方向と異なる当該第2配置方向に並べて配置した場合に、配置する前記取得画像が前記配置領域内となるか否かを判断する第2判断処理と、
前記第2判断処理において、配置する前記取得画像が前記配置領域内となると判断したことに基づいて、前記取得画像を前記配置済画像に重ならず、かつ、前記配置済画像に対して前記第2配置方向に並べて配置する第2配置処理と、
前記第2配置処理で配置した前記取得画像に対して実行する前記第1判断処理及び前記第1配置処理と、を前記コンピュータに実行させる請求項16または17に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の画像を配置した配置画像データを生成する技術に関する。
【背景技術】
【0002】
特許文献1は、原稿読取部と、操作部と、制御部と、を備える画像形成装置を開示する。操作部は、Nin1(2in1及び4in1)の選択及び記録用紙のサイズの設定を受け付ける。原稿読取部は、原稿に記録された画像を読み取って画像データを生成し、生成した画像データを出力する。制御部は、2in1が選択されると、2つの画像データが示す2つの画像を、選択された記録用紙の等分した領域にそれぞれ配置して、2つの画像を含む配置画像を生成する。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2009-296409号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に記載された画像形成装置の制御部が実行する「Nin1」の処理は、ユーザが指定したN個の画像を1ページの等分した領域に配置した画像データを生成する処理である。すなわち、特許文献1には、等分した領域に画像を配置する技術しか開示されていない。
【0005】
本発明は、等分した領域への配置に限定することなく、複数の画像を配置した配置画像データを生成する技術の提供を目的とする。
【課題を解決するための手段】
【0006】
本明細書では様々な開示を行う。開示例のプログラムは、メモリを有する情報処理装置のコンピュータによって実行される。開示例のプログラムは、複数の画像データを取得する第1取得処理と、取得した前記画像データが示す取得画像を配置する領域である配置領域のサイズである領域サイズを、外部プログラムから取得する第2取得処理と、取得した前記取得画像を、前記配置領域に既に配置した前記取得画像である配置済画像に重ならず、かつ、当該配置済画像に対して、前記メモリに記憶された第1配置方向に並べて配置する場合に、配置する前記取得画像が前記配置領域内となる適正配置となるか否かを判断する第1判断処理と、適正配置となると判断したことに基づいて、前記取得画像を前記配置済画像に重ならず、かつ、前記配置済画像に対して前記第1配置方向に並べて配置する第1配置処理と、前記配置領域に複数の前記配置済画像を配置した配置画像データを生成する生成処理と、を前記コンピュータに実行させる。
【0007】
開示例のプログラムは、配置領域に配置した複数の取得画像を配置して配置画像データを生成する。すなわち、開示例のプログラムは、Nの値の指定を受け付けて、受け付けたNの値に応じて配置領域を分割し、分割した各領域に画像データが示す画像を配置するのではなく、複数の取得画像を、第1配置方向で、領域サイズで示されるサイズの配置領域内に配置可能な限り配置して、配置画像データを生成する。したがって、開示例のプログラムは、等分した領域への配置に限定することなく、複数の画像を配置した配置画像データを生成することができる。
【0008】
他の開示例のプログラムは、メモリを有する情報処理装置のコンピュータによって実行される。他の開示例のプログラムは、複数の画像データを取得する第1取得処理と、取得した前記画像データが示す画像である取得画像を配置領域に配置する第1配置処理であって、当該配置領域に既に配置した前記取得画像である配置済画像に重ならず、かつ、当該配置済画像に対して、前記メモリに記憶された第1配置方向に並べて前記取得画像を配置する第1配置処理と、前記配置領域に複数の前記配置済画像を配置した配置画像データを生成する生成処理と、生成した前記配置画像データに基づいて、前記第1配置方向における当該配置画像データのサイズである配置サイズを算出する算出処理と、算出した前記配置サイズ及び生成した前記配置画像データを出力する出力処理と、を前記コンピュータに実行させる。
【0009】
他の開示例のプログラムは、配置領域に既に配置した配置済画像に重ならず、かつ、配置済画像に対して、第1配置方向に並べて取得画像を配置する。したがって、他の開示例のプログラムは、等分した領域への配置に限定することなく、複数の画像を配置した配置画像データを生成することができる。また、開示例のプログラムは、生成した配置画像のサイズを出力してユーザに通知することができる。
【図面の簡単な説明】
【0010】
図1図1は、実施形態に係る情報処理装置10及び複合機11の機能ブロック図である。
図2図2は、外部プログラム37、プログラム38、及び複合機11の制御プログラム67が実行する処理を説明する図である。
図3図3は、第1「Nin1」処理のフローチャートである。
図4図4(A)は、ラジオボタン87が選択された状態の設定画面を示す図であり、図4(B)は、スキャン結果画面を示す図である。
図5図5は、設定画面において「行(幅方向)」が指定された場合において、スキャン画像が配置ページに配置された状態を示す図である。
図6図6(A)は、設定画面において「行(幅方向)」が指定された場合において、スキャン画像が配置ページに配置された状態を示す図であり、図6(B)は、設定画面において「行(高さ方向)」が指定された場合において、スキャン画像が配置ページに配置された状態を示す図である。
図7図7は、第2「Nin1」処理のフローチャートである。
図8図8は、第3「Nin1」処理のフローチャートである。
図9図9(A)は、第2「Nin1」処理でスキャン画像を配置した配置ページを示す図であり、図9(B)は、第3「Nin1」処理でスキャン画像を配置した配置ページを示す図である。
図10図10(A)は、ラジオボタン88が選択された状態の設定画面を示す図であり図10(B)は、設定画面において、ラジオボタン88が選択され、かつテキストボックス80に「0」が入力された場合に生成される配置ページを示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について説明する。なお、以下に説明される実施形態は本発明の一例にすぎず、本発明の要旨を変更しない範囲で、本発明の実施形態を適宜変更できることは言うまでもない。例えば、後述する各処理の実行順序は、本発明の要旨を変更しない範囲で適宜変更することができる。或いは、後述の処理の一部は、本発明の要旨を変更しない範囲で適宜省略することができる。
【0012】
本実施形態では、図1に示される情報処理装置10に実装されるプログラム38について説明する。情報処理装置10は、パーソナルコンピュータやタブレットや携帯端末などであって、複合機11と通信する機能を有する。複合機11は、スキャン機能及び通信機能を有する。複合機11は、情報処理装置10から入力した指示にしたがって、レシートや領収書などの複数の原稿をスキャンして、複数の画像データを生成する。そして、複合機11は、生成した複数の画像データを情報処理装置10に送信する。情報処理装置10に実装されたプログラム38は、複合機11が送信した画像データが示す複数の画像をページに配置して配置画像データを生成する。プログラム38が生成した配置画像データは、例えば、税関係の機関などに提出される。以下、複合機11及び情報処理装置10の構成と、プログラム38が実行する処理とについて、詳しく説明する。
【0013】
まず、情報処理装置10と複合機11との通信について説明する。情報処理装置10がパーソナルコンピュータである場合、情報処理装置10及び複合機11は、例えば、有線LANや無線LANやWANやこれらの組み合わせなどで構築されるローカルネットワーク13にそれぞれ接続される。或いは、情報処理装置10及び複合機11は、USB(登録商標)ケーブルなどのケーブルによって相互に接続されてもよい。情報処理装置10が携帯端末やタブレットなどの無線通信機器である場合、複合機11は、アクセスポイントが設けられたローカルネットワーク13に接続される。無線通信機器である情報処理装置10は、当該アクセスポイント及びローカルネットワーク13を通じて複合機11と通信を行う。以下では、情報処理装置10がパーソナルコンピュータであって、情報処理装置10及び複合機11がローカルネットワーク13に接続された例を説明する。
【0014】
複合機11は、印刷エンジン54と、スキャナ55と、ユーザI/F52と、通信I/F53と、コントローラ51と、を備える。ただし、印刷エンジン54は、任意の構成である。すなわち、複合機11は、スキャン機能を有するスキャナであってもよい。通信I/F53は、上述のローカルネットワーク13と接続される。I/Fは、インタフェースの略である。
【0015】
印刷エンジン54は、シートに画像を印刷する機能を有する。印刷エンジン54は、例えば、インク滴をシートに吐出してシートに画像を印刷してもよいし、トナーをシートに転写してシートに画像を印刷してもよいし、熱転写によってシートに画像を印刷してもよい。
【0016】
スキャナ55は、コンタクトガラスに載置された原稿の画像を読み取って画像データを生成する機能を有する。また、スキャナ55は、複数の原稿を連続して搬送し、搬送する原稿の画像を読み取って複数の画像データを生成する機能を有する。すなわち、スキャナ55は、いわゆるADF(Auto Document Feederの略)機能を有する。
【0017】
ユーザI/F52は、例えば、複合機11が備えるタッチパネルが有するタッチセンサや、複合機11が備える操作スイッチである。
【0018】
コントローラ51は、中央演算処理装置であるCPU61と、メモリ62と、バス63と、を備える。コントローラ51は、例えば、パターン回路基板に実装されたマイクロコンピュータやIC等によって実現される。
【0019】
CPU61及びメモリ62と、上述の印刷エンジン54、スキャナ55、ユーザI/F52、及び通信I/F53とは、バス63に接続されている。すなわち、コンピュータであるCPU61は、バス63を通じて、メモリ62や印刷エンジン54やスキャナ55やユーザI/F52や通信I/F53と、情報やデータや駆動信号などを送受信することができる。
【0020】
メモリ62は、種々のプログラムを記憶するプログラム記憶領域64と、情報やデータを記憶するデータ記憶領域65と、を有する。メモリ62は、例えば、ROMや、RAMや、HDDや、USBメモリなどの可搬記憶媒体や、EEPROMや、CPU61が備えるバッファ等である。
【0021】
メモリ62は、コンピュータが読み取り可能なストレージ媒体であってもよい。コンピュータが読み取り可能なストレージ媒体とは、non-transitoryな媒体である。non-transitoryな媒体には、上記の例の他に、CD-ROM、DVD-ROM等の記録媒体も含まれる。また、non-transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、non-transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。後述のメモリ32についても同様である。
【0022】
プログラム記憶領域64は、オペレーティングシステムであるOS66と、制御プログラム67と、を記憶する。制御プログラム67は、印刷エンジン54に印刷データを入力して印刷エンジン54に印刷を実行させ、或いは、スキャナ55に駆動信号を入力してスキャンを実行させ、スキャナ55が生成した画像データを受信する。
【0023】
情報処理装置10は、コントローラ21と、ユーザI/F22と、通信I/F23と、ディスプレイ24と、を備える。ユーザI/F22は、例えば、マウスやキーボードやマイクロフォンなどである。通信I/F23は、ローカルネットワーク13と接続される。
【0024】
コントローラ21は、中央演算処理装置であるCPU31と、メモリ32と、バス33と、を備える。CPU31及びメモリ32と、上述のユーザI/F22、通信I/F23、及びディスプレイ24とは、バス33と接続されている。
【0025】
メモリ32は、複合機11のメモリ62と同様の構成であり、プログラム記憶領域34と、データ記憶領域35と、を有する。プログラム記憶領域34は、オペレーティングシステムであるOS36と、外部プログラム37と、プログラム38と、を記憶する。
【0026】
情報処理装置10がパーソナルコンピュータである場合、OS36は、Windows(登録商標)や、MacOS(登録商標)や、Unix(登録商標)や、Linux(登録商標)などである。情報処理装置10が携帯端末やタブレットである場合、OS36は、WindowsPhone(登録商標)や、iOS(登録商標)や、AndroidOS(登録商標)や、BLACKBerryOS(登録商標)などである。
【0027】
OS36、外部プログラム37、及びプログラム38は、それぞれのプログラムに記述された命令がCPU31によってそれぞれ実行されることにより、実行される。OS36、外部プログラム37、及びプログラム38は、いわゆるマルチタスク処理により、疑似的に並行して実行される。
【0028】
外部プログラム37は、ユーザの指示を受け付けて、プログラム38を通じて複合機11にスキャンの実行を指示するプログラムである。外部プログラム37は、本体モジュール41と、第1UIモジュール42と、を有する。外部プログラム37の本体モジュール41及び第1UIモジュール42が実行する処理については、後述する。
【0029】
プログラム38は、複合機11のスキャナ55にスキャンを指示し、スキャナ55が生成した画像データを加工する処理を実行するプログラムである。画像データを加工する処理は、スキャナ55が生成した複数の画像データをページに配置する処理を少なくとも含む。
【0030】
プログラム38は、コアモジュール43と、第2UIモジュール44と、を有する。上述の外部プログラム37は、第1UIモジュール42を用いて、ユーザの入力を受け付ける。或いは、外部プログラム37は、第1UIモジュール42を有さない場合、プログラム38が有する第2UIモジュール44を用いて、ユーザの入力を受け付ける。プログラム38は、第2UIモジュール44を有することにより、第1UIモジュール42を有さない外部プログラム37にも対応するすることができる。なお、外部プログラム37が第1UIモジュール42を有する場合、プログラム38は、第2UIモジュール44を有さなくてもよいので、第2UIモジュール44は、任意の構成である。
【0031】
データ記憶領域35は、基点位置や、設定画面(図4(A))を示す設定画面データを記憶する。設定画面は、複合機11のスキャナ55にスキャンを実行させるためのスキャン設定の入力を受け付けるための画面である。設定画面データは、例えば、プログラム38が情報処理装置10にセットアップされる際に、データ記憶領域35に記憶される。ただし、設定画面データは、プログラム38に含まれていてもい。設定画面については後述する。
【0032】
基点位置は、複合機11のスキャナ55が生成した画像データが示す複数の画像をページに配置する際の基点となる位置である。詳しくは後述する。
【0033】
以下、外部プログラム37及びプログラム38が実行する処理について詳しく説明する。なお、本明細書では、基本的に、プログラムに記述された命令に従ったCPU31の処理を説明する。すなわち、以下の説明における「判断」、「抽出」、「選択」、「算出」、「決定」、「特定」、「取得」、「受付」、「制御」、「設定」等の処理は、CPU31の処理を表している。CPU31による処理は、OS36を介したハードウェア制御も含む。なお、「取得」は要求を必須とはしない概念で用いる。すなわち、CPU31が要求することなくデータを受信するという処理も、「CPU31がデータを取得する」という概念に含まれる。また、本明細書中の「データ」とは、コンピュータに読取可能なビット列で表される。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。本明細書中の「情報」についても同様である。「命令」「応答」「要求」等の処理は、「命令」「応答」「要求」等を示す情報を通信することにより行われる。また、「命令」「応答」「要求」等の文言を、「命令」「応答」「要求」等を示す情報そのものという意味で記載してもよい。
【0034】
また、プログラムに記述された命令に従ったCPU31の処理を、省略した文言で記載することがある。例えば、「CPU31が行う」「コントローラ21が行う」「プログラムが行う」のように記載することがある。
【0035】
また、CPU31による、情報Aは事柄Bであることを示しているか否かを判断する処理を、「情報Aから、事柄Bであるか否かを判断する」のように概念的に記載することがある。CPU31による、情報Aが事柄Bであることを示しているか、事柄Cであるかを示しているかを判断する処理を、「情報Aから、事柄Bであるか事柄Cであるかを判断する」のように概念的に記載することがある。
【0036】
また、本明細書中の「データ」と「情報」とは、コンピュータによって取り扱い可能なビット或いはビット列である点において共通する。「データ」とは、各ビットが示す意味内容をコンピュータが考慮することなく取り扱えるものを指す。これに対して、「情報」とは、各ビットが示す意味内容によってコンピュータの動作が分岐するものを指す。さらに、「指示」は、送信先の装置に対して次の動作を促すための制御信号であって、情報を含んでいることもあるし、それ自体が情報としての性質を有していることもある。
【0037】
また、「データ」及び「情報」は、形式(例えば、テキスト形式、バイナリ形式、フラグ形式等)がコンピュータ毎に変更されたとしても、同一の意味内容と認識される限り、同一のデータ及び情報として取り扱われる。例えば、「2つ」であることを示す情報が、あるコンピュータではASCIIコードで”0x32”というテキスト形式の情報として保持され、別のコンピュータでは二進数表記で”10”というバイナリ形式の情報として保持されてもよい。
【0038】
但し、上記の「データ」及び「情報」の区別は厳密なものではなく、例外的な取り扱いも許容される。例えば、データが一時的に情報として扱われてもよいし、情報が一時的にデータとして扱われてもよい。また、ある装置ではデータとして扱われるものが、他の装置では情報として扱われてもよい。さらには、データの中から情報が取り出されてもよいし、情報の中からデータが取り出されてもよい。
【0039】
また、本明細書中の「に応じて」は、当該文字列の前に記載された条件が満たされた場合に、当該文字列の後に記載された処理が実行されることを示す。なお、処理が実行されるタイミングは、条件が満たされた後であればよく、当該条件が満たされた直後である必要は必ずしもない。
【0040】
以下では、スキャナ55が生成した画像データを、スキャン画像データと記載し、スキャン画像データが示す画像を、スキャン画像と記載して説明する。スキャン画像は、取得画像の一例である。
【0041】
図2に示されるように、外部プログラム37は、設定画面(図4(A)、図10(A))を情報処理装置10のディスプレイ24に表示させる(S11)。外部プログラム37の第1UIモジュール42は、外部プログラム37が有する設定画面データを用いて、OS36を通じて、設定画面をディスプレイ24に表示させる。外部プログラム37は、設定画面データを有していない場合、プログラム38が有するAPIを呼び出すことにより、プログラム38から設定画面データを取得し、取得した設定画面データを用いて、設定画面をディスプレイ24に表示させてもよい。外部プログラム37は、第1UIモジュール42を有さない場合、プログラム38が有するAPIを呼び出してもよい。プログラム38は、第2UIモジュール44を用いて、設定画面をディスプレイ24に表示させる。プログラム38の第2UIモジュール44が設定画面をディスプレイ24に表示させる処理は、表示処理の一例である。
【0042】
設定画面は、図4(A)に示されるように、「レイアウト設定」の文字と、ラジオボタン71と、ラジオボタン71の右に表示された「なし」の文字と、ラジオボタン72と、ラジオボタン72の右に表示された「2in1」の文字と、「2in1」の文字に表示された第1オブジェクト73と、ラジオボタン74と、ラジオボタン74の右に表示された「1to2」の文字と、「1to2」の文字に表示された第2オブジェクト75と、ラジオボタン76と、ラジオボタン76の右に表示された「Nin1」の文字と、「Nin1」の文字に表示された第3オブジェクト77と、を有する。
【0043】
第1オブジェクト73は、2つの画像を1ページに配置することを示すオブジェクトである。第2オブジェクト75は、1つの画像を2ページに配置することを示すオブジェクトである。第3オブジェクト77は、複数の画像を1ページに配置可能なだけ配置することを示すオブジェクトである。ユーザは、ラジオボタン71、72、74、76のうちのいずれかのラジオボタンを選択する。図示例では、ラジオボタン76が選択された状態が示されている。以下では、ラジオボタン76が選択された場合について、主に説明する。
【0044】
フローチャートには示されていないが、外部プログラム37は、ラジオボタン76が選択されたと判断すると、取得した設定画面データに基づいて、第4オブジェクト78及び第5オブジェクト79を、設定画面に表示させる。第4オブジェクト78は、複数のスキャン画像を示すオブジェクトである。図示例では、第4オブジェクト78は、5つのスキャン画像を示す。第5オブジェクト79は、複数のスキャン画像が1ページに配置された状態を示すオブジェクトである。以下では、複数のスキャン画像が配置されるページを、配置ページと記載して説明する。配置ページは配置領域の一例である。
【0045】
第5オブジェクト79において、配置ページに配置された5つのスキャン画像は、配置ページおける配置の規則性を示している。詳しく説明すると、設定画面は、配置の規則性を指定するオブジェクトとして、「配置方向」の文字と、ラジオボタン87と、ラジオボタン87の右に配置された「行(幅方向)」の文字と、ラジオボタン88と、ラジオボタン88の右に配置された「行(高さ方向)」の文字とをさらに有する。外部プログラム37は、ラジオボタン76が選択されたと判断すると、「配置方向」の文字と、ラジオボタン87、88と、「行(幅方向)」の文字と、「行(高さ方向)」の文字とを設定画面に表示させる。
【0046】
ラジオボタン87は、スキャン画像を最初に並べる方向が幅方向となることを指定するラジオボタンである。ラジオボタン88は、スキャン画像を最初に並べる方向が高さ方向となることを指定するラジオボタンである。図に示された「行」は、最初に並べられる複数のスキャン画像自体と、複数のスキャン画像が並ぶ方向とを示す。詳しく説明すると、図4(A)に示す例では、ラジオボタン87によって、「行(幅方向)」が指定されている。すなわち、「行(幅方向)」は、最初に並べられる複数のスキャン画像が並ぶ方向が幅方向であることを示す。そして、ラジオボタン87が指定されたことに応じて設定画面に表示される第5オブジェクト79は、最初に並べられるスキャン画像が、左から右に幅方向に沿って並べられることを示している。また、第5オブジェクト79は、一の行に配置できないスキャン画像である「4」の番号が付されたスキャン画像は、「1」から「3」の番号を付された3つのスキャン画像で構成される「一の行」の下に配置されることを示している。そして、第5オブジェクト79は、「4」の番号が付されたスキャン画像の次に配置ページに配置されるスキャン画像である「5」の番号が付されたスキャン画像が、「行」が示す方向(幅方向)において、「4」の番号が付されたスキャン画像に並べて配置されることを示している。「行(幅方向)」が指定された場合、幅方向は、第1配置方向の一例である。複数の行が並ぶ高さ方向は、第2配置方向の一例である。
【0047】
図10(A)は、ラジオボタン88によって、「行(高さ方向)」が指定されている例を示している。「行(高さ方向)」は、最初に並べられる複数のスキャン画像が並ぶ方向が高さ方向であることを示している。そして、ラジオボタン88が指定されたことに応じて設定画面に表示される第5オブジェクト79は、最初に並べられるスキャン画像が、上から下に高さ方向に沿って並べられることを示している。また、第5オブジェクト79は、一の行に配置できないスキャン画像である「4」の番号が付されたスキャン画像は、「1」から「3」の番号を付された3つのスキャン画像で構成される「一の行」の右に配置されることを示している。そして、第5オブジェクト79は、「4」の番号が付されたスキャン画像の次に配置ページに配置されるスキャン画像である「5」の番号が付されたスキャン画像が、「行」が示す方向(高さ方向)において、「4」の番号が付されたスキャン画像に並べて配置されることを示している。「行(高さ方向)」が指定された場合、高さ方向は、第1配置方向の一例である。複数の行が並ぶ幅方向は、第2配置方向の一例である。
【0048】
なお、設定画面は、「配置方向」の文字、ラジオボタン87、88、「行(幅方向)」の文字、及び「行(高さ方向)」の文字を有していなくてもよい。その場合、配置方向を示す情報がメモリ32に予め記憶される。外部プログラム37は、メモリ32に記憶された配置方向を示す情報に基づいて、図4(A)に示される設定画面、或いは図10(A)に示される設定画面をディスプレイ24に表示させる。
【0049】
また、外部プログラム37は、ラジオボタン76が選択されたと判断すると、取得した設定画面データに基づいて、「幅」の文字と、「幅」の文字の右に表示されたテキストボックス80と、テキストボックス80の右に表示された「mm」の文字と、「高さ」の文字と、「高さ」の文字の右に表示されたテキストボックス81と、テキストボックス81の右に表示された「mm」の文字と、「幅マージン」の文字と、「幅マージン」の文字の右に表示されたテキストボックス82と、テキストボックス82の右に表示された「mm」の文字と、「高さマージン」の文字と、「高さマージン」の文字の右に表示されたテキストボックス83と、テキストボックス83の右に表示された「mm」の文字と、を設定画面に表示させる。
【0050】
テキストボックス80は、複数のスキャン画像が配置される配置ページの行のサイズ或いは列のサイズの入力を受け付けるテキストボックスである。「行のサイズ」とは、「行」が示す方向における配置ページのサイズを意味する。「列のサイズ」とは、複数の「行」が並ぶ方向における配置ページのサイズを意味する。「行」が示す方向が幅方向である場合、「列」が示す方向は、高さ方向である。「行」が示す方向が高さ方向である場合、「列」が示す方向は、幅方向である。ラジオボタン87によって、「行(幅方向)」が指定されている場合、「行のサイズ」は、幅方向における配置ページのサイズであり、「列のサイズ」は、高さ方向における配置ページのサイズである。ラジオボタン88によって、「行(高さ方向)」が指定されている場合、「行のサイズ」は、高さ方向における配置ページのサイズであり、「列のサイズ」は、幅方向における配置ページのサイズである。
【0051】
さらに詳しく説明すると、ラジオボタン87によって、「行(幅方向)」が指定されている場合(図4(A))、テキストボックス80は、「行のサイズ」の入力を受け付ける。ラジオボタン88によって、「行(高さ方向)」が指定されている場合(図10(A))、テキストボックス80は、「列のサイズ」の入力を受け付ける。なお、テキストボックス80が受け付ける「行のサイズ」或いは「列のサイズ」は、配置ページの左右両側に設定される左右の余白サイズを含まないサイズである。ただし、テキストボックス80が受け付ける「行のサイズ」或いは「列のサイズ」は、左右の余白サイズを含んでいてもよい。配置ページの「行のサイズ」は、第1領域サイズの一例である。配置ページの「列のサイズ」は、第2領域サイズの一例である。
【0052】
同様に、テキストボックス81は、複数のスキャン画像が配置される配置ページの「行のサイズ」或いは「列のサイズ」の入力を受け付けるテキストボックスである。詳しく説明すると、ラジオボタン87によって、「行(幅方向)」が指定されている場合(図4(A))、テキストボックス81は、「列のサイズ」の入力を受け付ける。ラジオボタン88によって、「行(高さ方向)」が指定されている場合(図10(A))、テキストボックス81は、「行のサイズ」の入力を受け付ける。
【0053】
テキストボックス80、81は、「0」の値の入力も受け付ける。詳しくは後述するが、情報処理装置10のプログラム38は、テキストボックス80に入力された値が「0」以外の数値である場合、当該数値を配置ページの「行のサイズ」或いは「列のサイズ」として決定し、テキストボックス80に入力された値が「0」である場合、配置ページの「行のサイズ」或いは「列のサイズ」の指定がないと決定する。同様に、プログラム38は、テキストボックス81に入力された値が「0」以外の数値である場合、当該数値を配置ページの「列のサイズ」或いは「行のサイズ」として決定し、テキストボックス81に入力された値が「0」である場合、配置ページの「列のサイズ」或いは「行のサイズ」の指定がないと決定する。
【0054】
テキストボックス82は、幅方向に並ぶ2つのスキャン画像間の距離である幅マージンの入力を受け付けるテキストボックスである。図4(A)に示す例では、幅マージンは、例えば、「1」の番号が付されたスキャン画像と、「2」の番号が付されたスキャン画像との間の距離を示す。図10(A)に示す例では、幅マージンは、「3」の番号が付されたスキャン画像と、「4」或いは「5」の番号が付されたスキャン画像との間の距離を示す。
【0055】
テキストボックス83は、高さ方向に並ぶ2つのスキャン画像間の距離である高さマージンの入力を受け付けるテキストボックスである。図4(A)に示す例では、高さマージンは、例えば、「1」の番号が付されたスキャン画像と、「4」或いは「5」の番号が付されたスキャン画像との間の距離を示す。図10(A)に示す例では、高さマージンは、「1」の番号が付されたスキャン画像と、「2」の番号が付されたスキャン画像との間の距離を示す。
【0056】
また、外部プログラム37は、ラジオボタン76が選択されたと判断すると、取得した設定画面データに基づいて、ラジオボタン84と、ラジオボタン84の右に表示された「mm」の文字と、ラジオボタン85と、ラジオボタン85の右に表示された「inch」の文字と、「OK」アイコン86と、を設定画面に表示させる。
【0057】
外部プログラム37は、ラジオボタン84が選択されたことに応じて、図4(A)に示されるように、テキストボックス80、81、82、83の右に、「mm」の文字を表示させる。外部プログラム37は、ラジオボタン85が、選択されたことに応じて、「mm」の文字に代えて、テキストボックス80、81、82、83の右に、「inch」の文字を表示させる。
【0058】
外部プログラム37は、ユーザがユーザI/F22を用いて「OK」アイコン86を選択したと判断すると、ラジオボタン76が選択されていることを示す情報である「Nin1指定情報」と、テキストボックス80に入力されている値である「第1ページサイズ」と、テキストボックス81に入力されている値である「第2ページサイズ」と、ラジオボタン87が選択されているかラジオボタン88が選択されているかを示す「配置方向情報」と、テキストボックス82に入力されている値である上述の「幅マージン」と、テキストボックス83に入力されている値である上述の「高さマージン」と、ラジオボタン84が選択されているかラジオボタン85が選択されているかを示す「単位情報」と、を含む設定値を取得する(図2のS12)。なお、上述のように、配置方向情報が、ラジオボタン87が選択されていることを示す場合、第1ページサイズは、上述の「行のサイズ」であり、第2ページサイズは、上述の「列のサイズ」である。配置方向情報が、ラジオボタン88が選択されていることを示す場合、第1ページサイズは、「列のサイズ」であり、第2ページサイズは、「行のサイズ」である。プログラム38の第2UIモジュール44によって、プログラム38が設定値を受け付ける処理は、受付処理の一例である。
【0059】
外部プログラム37は、図2に示されるように、取得した設定値をプログラム38に受け渡す(S13)。例えば、外部プログラム37は、プログラム38のコアモジュール43が有するAPIを呼び出して、設定値を示すファイルパスをコアモジュール43に受け渡す。
【0060】
情報処理装置10のプログラム38は、外部プログラムから設定値を取得する(S13)。外部プログラム37の第1UIモジュール42によって受け付けた設定値をプログラム38が取得するステップS13の処理は、第2取得処理の一例である。プログラム38の第2UIモジュール44によってプログラム38が設定値を取得する処理は、第3取得処理の一例である。
【0061】
情報処理装置10のプログラム38は、取得した設定値をメモリ32に記憶させる(S135)。プログラム38が、設定値に含まれる配置方向情報をメモリ32に記憶させる処理は、記憶処理の一例である。
【0062】
設定値を取得したプログラム38は、スキャナ55にスキャンを実行させる実行指示をOS36、通信I/F23、及びローカルネットワーク13を通じて、複合機11に送信する(S14)。実行指示は、例えば、複合機11の制御プログラム67が解釈可能なコマンドである。
【0063】
複合機11の制御プログラム67は、通信I/F53を通じて実行指示を受信すると(S14)、スキャナ55に駆動信号を入力して、スキャンを開始させる(S15)。そして、制御プログラム67は、スキャナ55がスキャンによって生成した複数のスキャン画像データを取得する(S16)。例えば、スキャナ55は、上述のADF機能を用いてレシートや領収書等である原稿を順にスキャンし、スキャン画像データをスキャン順で生成する。制御プログラム67は、スキャナ55が生成したスキャン画像データと、当該スキャン画像データが示すスキャン画像のサイズを示す配置画像サイズと、を含む送信データを生成する(S17)。配置画像サイズは、例えばヘッダ情報である。配置画像サイズは、スキャン画像の幅方向のサイズを示す第1配置画像サイズと、スキャン画像の高さ方向のサイズを示す第2配置画像サイズと、を含む。第1配置画像サイズは、例えば、幅方向におけるスキャン画像の画素数である。第2配置画像サイズは、例えば、高さ方向におけるスキャン画像の画素数である。
【0064】
制御プログラム67は、例えば、送信データを生成するごとに、生成した送信データを、通信I/F53及びローカルネットワーク13を通じて情報処理装置10に送信する(S18)。すなわち、制御プログラム67は、複数の送信データを情報処理装置10に、順に送信する。
【0065】
情報処理装置10のプログラム38は、通信I/F23及びOS36を通じて、送信データを受信する(S18)。プログラム38が送信データを受信するステップS18の処理は、第1取得処理の一例である。送信データに含まれるスキャン画像データは、画像データの一例である。
【0066】
プログラム38は、受信した送信データに、受信した順番を示す受信番号を付して、情報処理装置10のメモリ32に記憶させる(S19)。或いは、プログラム38は、受信順を判別可能に送信データをメモリ32に記憶させる。
【0067】
プログラム38は、ステップS13で取得した設定値に、「Nin1指定情報」が含まれているか否かを判断する(S20)。プログラム38は、ステップS13で取得した設定値に「Nin1指定情報」が含まれていないと判断すると(S20:No)、「Nin1」以外の処理を実行し(S21)、処理を終了する。「Nin1」以外の処理とは、上述のラジオボタン72が選択された場合に実行する「2in1」の処理や、上述のラジオボタン74が選択された場合に実行する「1to2」の処理などである。「2in1」の処理や「1to2」の処理については、説明を省略する。
【0068】
情報処理装置10のプログラム38は、ステップS13で取得した設定値に「Nin1指定情報」が含まれていると判断すると(S20:Yes)、ステップS13で取得した設定値に含まれる上述の第1ページサイズや第2ページサイズや配置方向情報に基づいて、上述の「行のサイズ」の指定があるか否かを判断する(S22)。具体的には、プログラム38は、配置方向情報に基づいて、第1ページサイズと第2ページサイズとのいずれのサイズが「行のサイズ」であるかを特定し、特定した「行のサイズ」が「0」以外の値であることに応じて、行のサイズの指定があると判断し(S22:Yes)、特定した「行のサイズ」が「0」であることに応じて、行のサイズの指定がないと判断する(S22:No)。
【0069】
情報処理装置10のプログラム38は、行のサイズの指定があると判断すると(S22:Yes)、ステップS22と同様にして列のサイズの指定があるか否かを判断する(S23)。プログラム38は、行のサイズの指定及び列のサイズの指定があると判断すると(S22:YesかつS23:Yes)、第1「Nin1」処理を実行する(S24)。
【0070】
図3を参照して、第1「Nin1」処理について説明する。まず、情報処理装置10のプログラム38は、メモリ32に記憶された「i」及び「j」の値を初期値の「1」にする(S31)。「i」は、ステップS19においてメモリ32に記憶させた送信データを順に取得するためのものである。「j」は、配置ページに配置するスキャン画像が、配置ページに最初に配置するスキャン画像であるか否かを判断するためのものである。
【0071】
プログラム38は、受信番号「i」=1の送信データをメモリ32から読み出し、送信データが含むスキャン画像データ及び配置画像サイズを取得する(S32)。プログラム38が配置画像サイズを取得するステップS32の処理は、第4取得処理の一例である。
【0072】
また、情報処理装置10のプログラム38は、メモリ32に記憶された基点位置を取得する(S33)。基点位置は、配置ページに最初に配置されるスキャン画像の配置の基点となる位置である。図5(A)に示す例では、基点位置は、概ね配置ページの左上の位置である。基点位置は、幅方向における位置を示す第1基点位置と、高さ方向における位置を示す第2基点位置と、を含む。基点位置は、例えば、配置ページの左上の頂点となる位置を原点とする座標である。
【0073】
情報処理装置10のプログラム38は、ステップS32で取得した配置画像サイズが、配置ページの範囲内であるか否かを判断する(S34)。具体的には、プログラム38は、ステップS32で取得した配置画像サイズであって、画素数で示される第1配置画像サイズを、ステップS13で取得した単位情報が示す「mm」または「inch」に換算し、換算した第1配置画像サイズが、ステップS13で取得した第1ページサイズ以下であるか否かを判断する。同様に、プログラム38は、画素数で示される第2配置画像サイズを、単位情報が示す「mm」または「inch」に換算し、換算した第2配置画像サイズが、ステップS13で取得した第2ページサイズ以下であるか否かを判断する。プログラム38は、第1配置画像サイズが第1ページサイズ以下であり、かつ、第2配置画像サイズが第2ページサイズ以下であることに応じて、配置画像サイズが配置ページの範囲内であると判断する(S34:Yes)。プログラム38が、配置画像サイズが配置ページの範囲内であるか否かを判断するステップS34の処理は、サイズ判断処理の一例である。
【0074】
情報処理装置10のプログラム38は、配置画像サイズが配置ページの範囲内でないと判断すると(S34:No)、OS36、通信I/F22、及びローカルネットワーク13を通じて、送信データの送信を停止することの指示を複合機11に送信する(S35)。当該指示は、例えば、複合機11の制御プログラム67が解釈可能なコマンドである。フローチャートには示されていないが、複合機11の制御プログラム67は、通信I/F53を通じて当該指示を受信すると、送信データの送信を停止する。
【0075】
また、情報処理装置10のプログラム38は、第2UIモジュール44が使用されたか否かを判断する(S36)。すなわち、プログラム38は、第2UIモジュール44が、設定画面をディスプレイ24に表示させたか否かを判断する。プログラム38は、第2UIモジュール44が使用されたと判断すると(S36:Yes)、OS36を通じて、スキャン画像を配置ページに配置できないことをユーザに認識させるエラー画面を、情報処理装置10のディスプレイ24に表示させ(S37)、第1「Nin1」処理を終了する。なお、エラー画面を示すエラー画面データは、プログラム38に含まれるデータである。プログラム38がエラー画面をディスプレイ24に表示させるステップS37の処理は、エラー表示処理の一例である。
【0076】
情報処理装置10のプログラム38は、第2UIモジュール44が使用されていないと判断すると(S36:No)、スキャン画像を配置ページに配置できないことを示すエラー情報を外部プログラム37に受け渡し(S38)、第1「Nin1」処理を終了する。
【0077】
情報処理装置10のプログラム38は、ステップS34において、配置画像サイズが配置ページの範囲内であると判断すると(S34:Yes)、「j」の値が「1」であるか否かを判断する(S39)。すなわち、プログラム38は、配置するスキャン画像が、配置ページに配置する最初のスキャン画像であるか否かを判断する。プログラム38は、「j」の値が「1」であると判断すると(S39:Yes)、ステップS32で取得したスキャン画像の左上の頂点の位置が、ステップS13で取得した基点位置となるように、スキャン画像を配置ページに配置する(S40)。そして、プログラム38は、「i」及び「j」の値をインクリメントして(S41)、ステップS32の処理を再度実行する。
【0078】
情報処理装置10のプログラム38は、ステップS39において、「j」の値が「1」でないと判断すると(S39:No)、「行」について、配置予定のスキャン画像の適正配置が可能であるか否かを判断する(S42)。配置予定のスキャン画像とは、ステップS32で読み出した送信データに含まれるスキャン画像であって、かつ配置ページに未だ配置していないスキャン画像であり、ステップS33以降の処理の対象となるスキャン画像である。ステップS42の処理は、第1判断処理の一例である。
【0079】
ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合のステップS42の処理と、ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合のステップS42の処理と、について、詳しく説明する。なお、情報処理装置10のプログラム38のコアモジュール43は、例えば、「行」に沿う方向にスキャン画像を配置し、複数の「行」を、「列」に沿う方向に並べる処理を規定するクラスを有する。プログラム38は、「行」に沿う方向が幅方向であることを示す値を当該クラスに入力することにより、配置方向情報が「行(幅方向)」を示す場合のステップS42を含む処理を実行するオブジェクト(インスタンスとも称される)を生成する。また、プログラム38は、「行」に沿う方向が高さ方向であることを示す値を当該クラスに入力することにより、配置方向情報が「行(高さ方向)」を示す場合のステップS42を含む処理を実行するオブジェクトを生成する。すなわち、プログラム38は、前記クラスを有することにより、「行」が沿う方向を幅方向とするユーザの指定を受け付けることも、「行」が沿う方向を高さ方向とするユーザの指定を受け付けることもできる。
【0080】
ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合のステップS42の処理について、図5(A)を参照して詳しく説明する。図5(A)は、受信番号がi=12のスキャン画像である第12画像を配置ページに配置する場合を示している。すなわち、第12画像が配置予定画像である。以下では、配置ページに既に配置したスキャン画像を配置済画像と記載して説明する。
【0081】
まず、情報処理装置10のプログラム38は、確定していない「行」について、図5(A)に示される合計幅を算出する。確定していない「行」とは、後述のステップS47の「行」確定処理で確定されていない「行」を意味する。まず、プログラム38は、確定していない「行」について、各配置済画像ごとにステップS32でそれぞれ取得した第1配置画像サイズを足し合わせ、配置済画像合計値を算出する。図に示す例では、プログラム38は、第9画像の第1配置画像サイズと、第10画像の第1配置画像サイズと、第11画像の第1配置画像サイズと、を足し合わせ、配置済画像合計値を算出する。配置済画像合計値は、第1合計サイズの一例である。プログラム38が配置済画像合計値を算出する処理は、第1処理の一例である。
【0082】
次に、プログラム38は、配置済画像の個数から「1」を減じて得た値に幅マージンを乗じて、幅マージン合計値を算出する。図に示す例では、プログラム38は、配置画像の個数「3」から「1」を減じた値の「2」に幅マージンを乗じて、幅マージン合計値を算出する。幅マージンは、第1離間サイズの一例である。幅マージン合計値は、第1離間合計サイズの一例である。プログラム38が、配置済画像の個数と、幅マージンとに基づいて幅マージン合計値を算出する処理は、第3処理の一例である。
【0083】
プログラム38は、算出した配置済画像合計値と幅マージン合計値とを足し合わせ、合計幅を算出する。なお、幅マージンが「0」である場合、幅マージン合計値を算出する処理は、省略されてもよい。その場合、プログラム38は、配置済画像合計値を合計幅とする。
【0084】
次に、情報処理装置10のプログラム38は、配置予定のスキャン画像である第12画像の第1配置画像サイズと、幅マージンと、上述の合計幅との合計値である全合計値が、ステップS13で取得した第1ページサイズ以下であるか否かを判断する。プログラム38は、全合計値が第1ページサイズ以下であることに応じて、「行」について、適正配置が可能であると判断する(S42:Yes)。プログラム38は、全合計値が第1ページサイズよりも大きいことに応じて、「行」について、適正配置が可能でないと判断する(S42:No)。プログラム38が、全合計値が第1ページサイズ以下であるか否かを判断する処理は、第2処理の一例である。なお、幅マージンが「0」である場合、プログラム38は、合計幅と、配置予定のスキャン画像である第12画像の第1配置画像サイズとを足し合わせて全合計値を算出する。
【0085】
次に、ステップS13で取得した配置方向情報が「行(高さ方向)」を示す場合のステップS42の処理について、図6(B)を参照して説明する。プログラム38は、確定していない「行」について、図6(B)に示される合計高さを算出する。具体的には、プログラム38は、各配置済画像ごとにステップS32でそれぞれ取得した第2配置画像サイズを足し合わせ、配置済画像合計値を算出する。図に示す例では、プログラム38は、第10画像の第2配置画像サイズと、第11画像の第2配置画像サイズと、を足し合わせ、配置済画像合計値を算出する。配置済画像合計値は、第1合計サイズの一例である。プログラム38が配置済画像合計値を算出する処理は、第1処理の一例である。
【0086】
次に、プログラム38は、配置済画像の個数から「1」を減じて得た値に高さマージンを乗じて、高さマージン合計値を算出する。図に示す例では、プログラム38は、配置画像の個数「2」から「1」を減じた値の「1」に高さマージンを乗じて、高さマージン合計値を算出する。高さマージンは、第1離間サイズの一例である。高さマージン合計値は、第1離間合計サイズの一例である。プログラム38が、配置済画像の個数と、高さマージンとに基づいて高さマージン合計値を算出する処理は、第3処理の一例である。
【0087】
プログラム38は、算出した配置済画像合計値と高さマージン合計値とを足し合わせ、合計高さを算出する。なお、高さマージンが「0」である場合、高さマージン合計値を算出する処理は、省略されてもよい。その場合、プログラム38は、配置済画像合計値を合計高さとする。
【0088】
次に、情報処理装置10のプログラム38は、配置予定のスキャン画像である第12画像の第2配置画像サイズと、高さマージンと、上述の合計高さとの合計値である全合計値が、ステップS13で取得した第2ページサイズ以下であるか否かを判断する。プログラム38は、全合計値が第2ページサイズ以下であることに応じて、「行」について、適正配置が可能であると判断する(S42:Yes)。プログラム38は、全合計値が第2ページサイズよりも大きいことに応じて、「行」について、適正配置が可能でないと判断する(S42:No)。プログラム38が、全合計値が第2ページサイズ以下であるか否かを判断する処理は、第2処理の一例である。なお、高さマージンが「0」である場合、プログラム38は、合計高さと、配置予定のスキャン画像である第12画像の第2配置画像サイズとを足し合わせて全合計値を算出する。
【0089】
情報処理装置10のプログラム38は、図3に示されるように、ステップS42において、「行」について適正配置が可能であると判断すると(S42:Yes)、「列」について適正配置が可能であるか否かを判断する(S43)。
【0090】
ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合のステップS43の処理について、図5(B)を参照して詳しく説明する。図5(B)では、第1画像から第5画像までが幅方向に並んでおり、「一の行」を構成している。また、第6画像から第8画像までが幅方向に並んでおり、「他の一の行」を構成している。また、第9画像から第11画像までが幅方向に並んでおり、「さらに他の一の行」を構成している。
【0091】
まず、情報処理装置10のプログラム38は、図5(B)に示される合計高さを算出する。具体的には、プログラム38は、各「行」に含まれる複数の配置済画像のうち、第2配置画像サイズが最も大きい配置済画像の当該第2配置画像サイズを足し合わせ、配置済画像合計値を算出する。図に示す例では、プログラム38は、第3画像の第2配置画像サイズと、第7画像の第2配置画像サイズとを足し合わせ、配置済画像合計値を算出する。配置済画像の高さは、第2サイズの一例である。各「行」における配置済画像のうち、第2配置画像サイズが最も大きい配置済画像は、特定配置済画像の一例である。特定配置済画像の第2配置画像サイズは、特定第2サイズの一例である。プログラム38が、特定第2サイズを取得する処理は、第4処理の一例である。プログラム38が、配置済画像合計値を算出する処理は、第5処理の一例である。配置済画像合計値は、第2合計サイズの一例である。
【0092】
次に、情報処理装置10のプログラム38は、確定した「行」の個数から1を減じて得た値に高さマージンを乗じて、高さマージン合計値を算出する。確定した「行」とは、後述のステップS47の「行」確定処理で確定された「行」を意味する。図に示す例では、第1画像から第5画像までを含む上述の「一の行」と、第6画像から第8画像までを含む上述の「他の一の行」が、確定した「行」である。すなわち、図に示す例では、確定した「行」の個数は「2」である。プログラム38は、確定した「行」の個数「2」から1を減じて得た値「1」に高さマージンを乗じて、高さマージン合計値を算出する。高さマージンは、第2離間サイズの一例である。高さマージン合計値は、第2離間合計サイズの一例である。プログラム38が、高さマージン合計値を算出する処理は、第7処理の一例である。
【0093】
情報処理装置10のプログラム38は、算出した配置済画像合計値と高さマージン合計値とを足し合わせ、合計高さを算出する。なお、高さマージンが「0」である場合、高さマージン合計値を算出する処理は、省略されてもよい。その場合、プログラム38は、配置済画像合計値を合計高さとする。
【0094】
次に、情報処理装置10のプログラム38は、配置予定のスキャン画像である第12画像の第2配置画像サイズと、高さマージンと、上述の合計高さとの合計値である全合計値が、第2ページサイズ以下であるか否かを判断する。プログラム38は、図3に示されるように、全合計値が第2ページサイズ以下であることに応じて、「列」について、適正配置が可能であると判断する(S43:Yes)。プログラム38は、全合計値が第2ページサイズよりも大きいことに応じて、「列」について、適正配置が可能でないと判断する(S43:No)。プログラム38が、全合計値が第2ページサイズ以下であるか否かを判断する処理は、第6処理の一例である。なお、高さマージンが「0」である場合、プログラム38は、合計高さと、配置予定のスキャン画像である第12画像の第2配置画像サイズとを足し合わせて全合計値を算出する。
【0095】
次に、ステップS13で取得した配置方向情報が「行(高さ方向)」を示す場合のステップS43の処理について、図6(B)を参照して詳しく説明する。図6(B)では、第1画像から第4画像までが高さ方向に並んでおり、「一の行」を構成している。また、第5画像から第9画像までが高さ方向に並んでおり、「他の一の行」を構成している。また、第10画像及び第11画像が高さ方向に並んでおり、「さらに他の一の行」を構成している。
【0096】
まず、情報処理装置10のプログラム38は、図6(B)に示される合計幅を算出する。具体的には、プログラム38は、各「行」に含まれる複数の配置済画像のうち、第1配置画像サイズが最も大きい配置済画像の当該第1配置画像サイズを足し合わせ、配置済画像合計値を算出する。図に示す例では、プログラム38は、第2画像の第1配置画像サイズと、第8画像の第1配置画像サイズとを足し合わせ、配置済画像合計値を算出する。配置済画像の幅は、第2サイズの一例である。各「行」における配置済画像のうち、第1配置サイズが最も大きい配置済画像は、特定配置済画像の一例である。特定配置済画像の第1配置サイズは、特定第2サイズの一例である。プログラム38が、特定第2ページサイズを取得する処理は、第4処理の一例である。プログラム38が、配置済画像合計値を算出する処理は、第5処理の一例である。配置済画像合計値は、第2合計サイズの一例である。
【0097】
次に、情報処理装置10のプログラム38は、確定した「行」の個数から1を減じて得た値に高さマージンを乗じて、高さマージン合計値を算出する。図に示す例では、第1画像から第4画像までを含む上述の「一の行」と、第5画像から第9画像までを含む上述の「他の一の行」が、確定した「行」である。すなわち、図に示す例では、確定した「行」の個数は「2」である。プログラム38は、確定した「行」の個数「2」から1を減じて得た値「1」に幅マージンを乗じて、幅マージン合計値を算出する。幅マージンは、第2離間サイズの一例である。幅マージン合計値は、第2離間合計サイズの一例である。プログラム38が、幅マージン合計値を算出する処理は、第7処理の一例である。
【0098】
情報処理装置10のプログラム38は、算出した配置済画像合計値と高さマージン合計値とを足し合わせ、合計高さを算出する。なお、高さマージンが「0」である場合、高さマージン合計値を算出する処理は、省略されてもよい。その場合、プログラム38は、配置済画像合計値を合計高さとする。
【0099】
次に、情報処理装置10のプログラム38は、配置予定のスキャン画像である第12画像の第1配置画像サイズと、幅マージンと、上述の合計幅との合計値である全合計値が、第1ページサイズ以下であるか否かを判断する。プログラム38は、図3に示されるように、全合計値が第1ページサイズ以下であることに応じて、「列」について、適正配置が可能であると判断する(S43:Yes)。プログラム38は、全合計値が第1ページサイズよりも大きいことに応じて、「列」について、適正配置が可能でないと判断する(S43:No)。プログラム38が、全合計値が第1ページサイズ以下であるか否かを判断する処理は、第6処理の一例である。なお、幅マージンが「0」である場合、プログラム38は、合計幅と、配置予定のスキャン画像である第12画像の第1配置画像サイズとを足し合わせて全合計値を算出する。
【0100】
情報処理装置10のプログラム38は、「列」について適正配置が可能であると判断すると(S43:Yes)、スキャン画像を配置ページに配置する(S44)。詳しく説明すると、ステップS13で取得した配置方向情報が、「行(幅方向)」を示す場合、プログラム38は、直前に配置した配置済画像の右上の頂点の位置から右に幅マージンだけ移動した位置を特定する。プログラム38は、スキャン画像の左上の頂点の位置が、特定した位置となるように、スキャン画像を配置する。プログラム38は、スキャン画像を配置したことに応じて、配置したスキャン画像の右上の頂点の位置をメモリ32に記憶させる。メモリ32に記憶させた位置は、次に配置するスキャン画像において、上述の「直前に配置した配置済画像の右上の頂点の位置」となる。
【0101】
ステップS13で取得した配置方向情報が、「行(高さ方向)」を示す場合、プログラム38は、直前に配置した配置済画像の左下の頂点の位置から下に高さマージンだけ移動した位置を特定する。プログラム38は、スキャン画像の左上の頂点の位置が、特定した位置となるように、スキャン画像を配置する。プログラム38は、スキャン画像を配置したことに応じて、配置したスキャン画像の左下の頂点の位置をメモリ32に記憶させる。メモリ32に記憶させた位置は、次に配置するスキャン画像において、上述の「直前に配置した配置済画像の左下の頂点の位置」となる。
【0102】
情報処理装置10のプログラム38は、スキャン画像を配置ページに配置したことに応じて(S44)、未配置のスキャン画像を含む送信データがメモリ32に記憶されているか否かを判断する(S45)。例えば、プログラム38は、現在の「i」の値が、メモリ32に記憶された送信データに付された受信番号の最大値未満であることに応じて、未配置のスキャン画像を含む送信データがメモリ32に記憶されていると判断する(S45:Yes)。
【0103】
情報処理装置10のプログラム38は、未配置のスキャン画像を含む送信データがメモリ32に記憶されていると判断すると(S45:Yes)、「i」及び「j」の値をインクリメントし(S46)、ステップS32以降の処理を再度実行する。
【0104】
情報処理装置10のプログラム38は、ステップS42の処理において、「行」について、適正配置が可能でないと判断すると(S42:No)、「行」を確定する「行」確定処理を実行する(S47)。すなわち、プログラム38は、「行」においてスキャン画像を配置済画像に並べて配置できないと判断すると、「行」を確定する。
【0105】
例えば、S13で取得した配置方向情報が「行(幅方向)」を示す場合、プログラム38は、スキャン画像を配置ページに配置するごとに、配置した配置済画像の第2配置画像サイズと、配置した配置済画像の最下点の位置とを特定し、特定した第2配置画像サイズが、メモリ32に記憶された第2配置画像サイズよりも大きい場合、メモリ32に記憶された第2配置画像サイズを、特定した第2配置画像サイズで上書きし、メモリ32に記憶された最下点の位置を、特定した最下点の位置で上書きする。プログラム38は、「行」を確定したことに応じて、次の「行」について、第2配置画像サイズ及び最下点の位置をメモリ32に記憶させる。すなわち、ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合、「行」確定処理は、第2配置画像サイズ及び最下点の位置を確定させる処理である。
【0106】
一方、S13で取得した配置方向情報が「行(高さ方向)」を示す場合、プログラム38は、スキャン画像を配置ページに配置するごとに、配置した配置済画像の第1配置画像サイズと、配置した配置済画像の最右点の位置とを特定し、特定した第1配置画像サイズが、メモリ32に記憶された第1配置画像サイズよりも大きい場合、メモリ32に記憶された第1配置画像サイズを、特定した第1配置画像サイズで上書きし、メモリ32に記憶された最右点の位置を、特定した最右点の位置で上書きする。プログラム38は、「行」を確定したことに応じて、次の「行」について、第1配置画像サイズ及び最右点の位置をメモリ32に記憶させる。すなわち、ステップS13で取得した配置方向情報が「行(高さ方向)」を示す場合、「行」確定処理は、第1配置画像サイズ及び最右点の位置を確定させる処理である。
【0107】
「行」確定処理により、各「行」における第2配置画像サイズ或いは第1画像サイズの最大値と、最下点或いは最右点の位置とが、メモリ32において確定する。ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合、各「行」における第2配置画像サイズの最大値は、ステップS43において説明したように、合計高さの算出に用いられる。最下点の位置は、次の「行」において最初に配置されるスキャン画像の配置位置の基点位置として用いられる。ステップS13で取得した配置方向情報が「行(高さ方向)」を示す場合、各「行」における第1配置画像サイズの最大値は、合計幅の算出に用いられる。最右点の位置は、次の「行」において最初に配置されるスキャン画像の配置位置の基点位置として用いられる。
【0108】
情報処理装置10のプログラム38は、ステップS45の行確定処理の実行後、ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合、ステップS33で取得した第1基点位置と、メモリ32に記憶された最下点から下に高さマージンだけ移動した位置と、が示す位置を特定する。メモリ32に記憶された最下点から下に高さマージンだけ移動した位置は、第3基点位置の一例である。或いは、プログラム38は、配置方向情報が「行(高さ方向)」を示す場合、ステップS33で取得した第2基点位置と、メモリ32に記憶された最右点から右に幅マージンだけ移動した位置と、が示す位置を特定する。メモリ32に記憶された最右点から右に幅マージンだけ移動した位置は、第3基点位置の一例である。
【0109】
情報処理装置10のプログラム38は、スキャン画像の左上の頂点の位置が、特定した位置となるようにスキャン画像を配置した場合に、「列」について、適正配置が可能か否かを判断する(S48)。図6(A)は、ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合に、配置予定画像である第12画像を、高さ方向に並べて配置可能か否かを示す図である。ステップS48の判断処理は、上述のステップS43の処理と同様にして行われる。なお、スキャン画像は、メモリ32に記憶された最下点から下に高さマージンだけ移動した位置を高さ方向の基点位置として配置ページに配置され、或いは、メモリ32に記憶された最右点から右に幅マージンだけ移動した位置を基点位置として配置ページに配置されるので、「一の行」に含まれる配置済画像と、「他の一の行」に含まれる配置済画像とが互いに重なることはない。プログラム38が、「列」について、適正配置が可能か否かを判断するステップS48の処理は、第2判断処理の一例である。
【0110】
情報処理装置10のプログラム38は、図3に示されるように、「列」について、適正配置が可能であると判断すると(S48:Yes)、特定した上述の位置に、スキャン画像の左上の頂点の位置が重なるように、スキャン画像を配置ページに配置する(S49)。具体的には、プログラム38は、ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合、配置済画像に高さ方向において並ぶようにスキャン画像を配置ページに配置する(S49)。プログラム38は、ステップS13で取得した配置方向情報が「行(高さ方向)」を示す場合、配置済画像に幅方向において並ぶようにスキャン画像を配置ページに配置する(S49)。ステップS49の処理は、第2配置処理の一例である。
【0111】
情報処理装置10のプログラム38は、ステップS49の処理の実行後、上述のステップS45の処理を実行する。すなわち、プログラム38は、未配置のスキャン画像データを有する送信データがあるか否かを判断する(S45)。
【0112】
一方、情報処理装置10のプログラム38は、ステップS43、S48において、「列」について、適正な配置ができないと判断すると(S42:No、S48:No)、複数の配置済画像を含む配置ページである配置画像データを生成し(S50)、生成した配置画像データをメモリ32のデータ記憶領域35に記憶させる(S51)。プログラム38は、例えば、1ページ分の配置画像データを1ファイルデータとして配置画像データを生成し、メモリ32に記憶させる。プログラム38が配置画像データを生成するステップS50の処理は、生成処理の一例である。
【0113】
情報処理装置10のプログラム38は、配置画像データをメモリに記憶させた後(S51)、配置ページを確定するページ確定処理を実行する(S52)。具体的には、プログラム38は、「j」の値を「1」にする。また、プログラム38は、次の配置ページを生成するための処理を実行する。例えば、プログラム38は、「j」などの変数を初期化する。
【0114】
情報処理装置10のプログラム38は、ページ確定処理(S52)の実行後、ステップS32以降の処理を再度実行する。ページ確定処理を実行してから実行されるステップS34の処理では、「j」の値は、初期値の「1」である。したがって、ステップS46において配置ページに配置できないと判断されたスキャン画像は、ステップS40の処理において、スキャン画像の左上の頂点の位置が基点位置となるように、次の配置ページに配置される。ステップS50の処理の実行後に実行されるステップS40の処理は、第3配置処理の一例である。
【0115】
情報処理装置10のプログラム38は、ステップS45において、未配置のスキャン画像データを含む送信データがないと判断すると(S45:No)、上述のステップS50、S51の処理を実行し、第1「Nin1」処理を終了する。
【0116】
情報処理装置10のプログラム38は、図2に示されるように、第1「Nin1」処理(S24)の実行後、生成した配置画像データのファイルを示すファイルパス、或いは配置画像データのファイル自体を、外部プログラム37に受け渡し(S27)、処理を終了する。プログラム38が、配置画像データのファイルを示すファイルパス、或いは配置画像データのファイル自体を外部プログラム37に受け渡すステップS27の処理は、出力処理の一例である。
【0117】
情報処理装置10のプログラム38は、ステップS22において、「行のサイズ」の指定がないと判断すると(S22:Yes)、第2「Nin1」処理を実行する(S25)。図7を参照して、第2「Nin1」処理について説明する。なお、第1「Nin1」処理で説明した処理と同一の処理については、同一のステップ番号を付して説明を省略する。
【0118】
まず、情報処理装置10のプログラム38は、上述のステップS31からS33までの処理を実行する。そして、プログラム38は、ステップS13で取得した配置方向情報、第1ページサイズ、及び第2ページサイズに基づいて特定した「列のサイズ」が「0」以外の値であって、「列のサイズ」が指定がされているか否かを判断する(S61)。プログラム38は、ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合であって、かつ、「列のサイズ」が指定がされていると判断すると(S61:Yes)、ステップS32で取得した第2配置画像サイズが、第2ページサイズ以下であるか否かを判断する(S62)。プログラム38は、ステップS13で取得した配置方向情報が「行(高さ方向)」を示す場合であって、かつ、「列のサイズ」が指定がされていると判断すると(S61:Yes)、ステップS32で取得した第1配置画像サイズが、第1ページサイズ以下であるか否かを判断する(S62)。すなわち、ステップS62では、配置するスキャン画像が配置ページに配置可能か否かが判断される。
【0119】
情報処理装置10のプログラム38は、配置予定のスキャン画像を配置ページに配置可能でないと判断すると(S62:No)、上述のステップS35からS38までの処理を実行し、第2「NIn1」処理を終了する。プログラム38は、配置予定のスキャン画像を配置ページに配置可能であると判断すると(S62:Yes)、「j」の値が「1」であるか否かを判断する(S39)。プログラム38は、「j」の値が「1」であると判断すると(S39:Yes)、上述のステップS40、S41の処理を実行する。プログラム38は、「j」の値が「1」でないと判断すると(S39:No)、上述のステップS44と同様にしてスキャン画像を配置する(S63)。具体的には、ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合、プログラム38は、配置予定のスキャン画像を、幅方向において配置済画像に並べて配置する(S63)。ステップS13で取得した配置方向情報が「行(高さ方向)」を示す場合、プログラム38は、配置予定のスキャン画像を高さ方向において配置済画像に並べて配置する(S63)。そして、プログラム38は、上述のステップS45、S46の処理を実行する。
【0120】
情報処理装置10のプログラム38は、ステップS45において、配置するスキャンデータを含む送信データがないと判断すると(S45:No)、図9(A)に示される生成ページサイズを算出する(S64)。なお、図9(A)は、ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合を示している。ステップS64の処理について詳しく説明すると、プログラム38は、ステップS63で配置ページに配置した全てのスキャン画像の第1配置画像サイズをメモリ32に記憶させる。そして、プログラム38は、メモリ32に記憶させた全ての第1配置画像サイズを合計した配置済画像合計値を算出する。次に、プログラム38は、配置ページに配置した配置済画像の個数から「1」を減じた値に幅マージンを乗じた値である幅マージン合計値を算出する。そして、プログラム38は、配置済画像合計値と、幅マージン合計値と、左右の余白サイズと、を合計して、生成ページサイズを算出する。プログラム38が生成ページサイズを算出するステップS64の処理は、算出処理の一例である。生成ページサイズは、配置サイズの一例である。
【0121】
情報処理装置10のプログラム38は、ステップS13で取得した配置方向情報が「行(高さ方向)」を示す場合、ステップS63で配置ページに配置した全てのスキャン画像の第2配置画像サイズをメモリ32に記憶させる。そして、プログラム38は、メモリ32に記憶させた全ての第2配置画像サイズを合計した配置済画像合計値を算出する。次に、プログラム38は、配置ページに配置した配置済画像の個数から「1」を減じた値に高さマージンを乗じた値である高さマージン合計値を算出する。そして、プログラム38は、配置済画像合計値と、高さマージン合計値と、上下の余白サイズと、を合計して、生成ページサイズを算出する。
【0122】
情報処理装置10のプログラム38は、生成ページサイズをメモリ32のデータ記憶領域35に記憶させる(S65)。そして、プログラム38は、上述のステップS36と同様にして、第2UIモジュール44が使用されたか否かを判断する(S66)。プログラム38は、第2UIモジュール44が使用されたと判断すると(S66:Yes)、第2UIモジュール44を用いて、メモリ32に記憶させた生成ページサイズを含むスキャン結果画面をディスプレイ24に表示させる(S67)。図4(B)は、スキャン結果画面を示す。スキャン結果画面は、「スキャン結果」の文字と、生成した配置画像を示すオブジェクトと、算出した生成ページサイズ(図における「A」)と、を有する。スキャン結果画面は、生成ページサイズを含むスキャン結果をユーザに認識させる。
【0123】
情報処理装置10のプログラム38は、第2UIモジュール44が使用されていないと判断すると(S66:No)、算出した生成ページサイズを、外部プログラム37の要求に応じて、外部プログラム37に受け渡す(S68)。プログラム38が生成ページサイズを出力するステップS67、S68の処理は、出力処理の一例である。
【0124】
プログラム38は、ステップS67或いはステップS68の処理の実行後、上述のステップS50、S51の処理を実行し、第2「Nin1」処理を終了する。すなわち、プログラム38は、配置画像データを生成し、生成した配置画像データをメモリ32に記憶させる。なお、配置画像データは、上述の生成ページサイズを含んでいてもよい。
【0125】
情報処理装置10のプログラム38は、図2に示されるように、第2「Nin1」処理の実行後、生成した配置画像データのファイルを示すファイルパス、或いは配置画像データのファイル自体を外部プログラム37に受け渡し(S27)、処理を終了する。
【0126】
情報処理装置10のプログラム38は、ステップS22で配置ページの「行のサイズ」の指定があると判断し(S22:Yes)、かつ、ステップS23で「列のサイズ」の指定がないと判断すると(S23:No)、第3「Nin1」処理を実行する(S26)。図8を参照して、第3「Nin1」処理について説明する。なお、第1「Nin1」処理及び第2「Nin1」で説明した処理と同一の処理については、同一のステップ番号を付して説明を省略する。
【0127】
まず、情報処理装置10のプログラム38は、上述のステップS31からS33までの処理を実行する。そして、プログラム38は、ステップS32で取得したスキャン画像が、配置ページに配置可能か否かを判断する(S71)。ステップS71の処理について詳しく説明する。
【0128】
まず、ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合について、図9(B)を参照して説明する。図9(B)に示されるように、配置方向情報が「行(幅方向)」を示す場合、「行のサイズ」は第1ページサイズである。そして、「行のサイズ」が指定されている。情報処理装置10のプログラム38は、ステップS32で取得した第1配置画像サイズが、指定のある「行のサイズ」である第1ページサイズ以下である場合、スキャン画像が、配置ページに配置可能であると判断する(図8のS71:Yes)。プログラム38は、ステップS32で取得した第1配置画像サイズが、第1ページサイズより大きい場合、スキャン画像が、配置ページに配置可能でないと判断する(S71:No)。
【0129】
次に、ステップS13で取得した配置方向情報が「行(高さ方向)」を示す場合について説明する。配置方向情報が「行(高さ方向)」を示す場合、「行のサイズ」は第2ページサイズである。情報処理装置10のプログラム38は、ステップS32で取得した第2配置画像サイズが、第2ページサイズ以下である場合、スキャン画像が、配置ページに配置可能であると判断する(S71:Yes)。プログラム38は、ステップS32で取得した第2配置画像サイズが、第2ページサイズより大きい場合、スキャン画像が、配置ページに配置可能でないと判断する(S71:No)。
【0130】
情報処理装置10のプログラム38は、ステップS71において、スキャン画像が、配置ページに配置可能でないと判断すると(S71:No)、上述のステップS35からS38までの処理を実行し、第3「Nin1」処理を終了する。プログラム38は、スキャン画像が、配置ページに配置可能であると判断すると(S71:Yes)、j=1であるか否かを判断する(S39)。すなわち、プログラム38は、配置するスキャン画像が配置ページに配置する最初のスキャン画像であるか否かを判断する。
【0131】
情報処理装置10のプログラム38は、j=1であると判断すると(S39:Yes)、ステップS33で取得した基点位置を基点としてスキャン画像を配置して(S40)、「i」及び「j」の値をインクリメントし(S41)、ステップS32以降の処理を再度実行する。プログラム38は、j=1でないと判断すると(S39:No)、ステップS42からS44までの処理を実行して、「行」画定処理を実行する(S47)。図9(B)に示す例では、第1画像から第3画像を含む「行」と、第4画像から第6画像までを含む「行」とが確定されている。
【0132】
情報処理装置10のプログラム38は、図8に示されるように、「行」を確定した後(S47)、配置予定のスキャン画像を配置ページに配置する(S72)。ステップS72の処理は、上述のステップS49の処理と同様にして実行される。図9(B)に示す例では、ステップS72の処理において、第7画像が、第4画像から第6画像までを含む「行」の下に配置される。
【0133】
情報処理装置10のプログラム38は、ステップS72の処理の実行後、上述のステップS45の処理を実行する。プログラム38は、ステップS45で、配置するスキャン画像データを含む送信データがないと判断すると(S45:No)、図9(B)に示される生成ページサイズを算出する(S73)。ステップS13で取得した配置方向情報が「行(幅方向)」を示す場合に実行されるステップS73の処理について、図9(B)を参照して説明する。プログラム38は、配置ページにスキャン画像を配置するごとに、配置したスキャン画像の第2配置画像サイズが、メモリ32に記憶させた第2配置画像サイズより大きいか否かを判断し、大きいと判断すると、配置したスキャン画像の第2配置画像サイズを、メモリ32に記憶させた第2配置サイズ画像に対して上書きしてメモリ32に記憶させる。すなわち、プログラム38は、配置したスキャン画像の第2配置画像サイズのうち、最大値をメモリ32に記憶させる。また、プログラム38は、第2配置画像サイズの最大値をメモリ32に記憶させる処理を、ステップS47で確定させる「行」ごとに行う。すなわち、プログラム38は、確定させる「行」ごとに、第2配置画像サイズの最大値をメモリ32に記憶させる。図9(B)に示す例では、第3画像の第2配置画像サイズと、第5画像の第2配置画像サイズと、第7画像の第2配置画像サイズとがメモリ32に記憶される。
【0134】
プログラム38は、メモリ32に記憶させた全ての第2配置画像サイズの最大値を合計した配置済画像合計値を算出する。次に、プログラム38は、確定した「行」の個数から「1」を減じた値に高さマージンを乗じた値である高さマージン合計値を算出する。図9(B)に示す例では、プログラム38は、確定した「行」の個数「3」から1を減じた値「2」に高さマージンを乗じて高さマージン合計値を算出する。プログラム38は、算出配置済画像合計値と、算出した高さマージン合計値と、上下の余白サイズと、を合計して、生成ページサイズを算出する。
【0135】
図10(B)は、ステップS13で取得した配置方向情報が「行(高さ方向)」を示す場合に生成される配置ページを示す。具体的には、図10(B)は、設定画面(図10(A))において、ラジオボタン88が選択され、かつテキストボックス80に「0」が入力された場合に生成される配置ページを示す図である。情報処理装置10のプログラム38は、ステップS13で取得した配置方向情報が「行(高さ方向)」を示す場合、上述と同様にして、生成ページサイズを算出する。
【0136】
情報処理装置10のプログラム38は、生成したページサイズをメモリ32のデータ記憶領域35に記憶させる(S74)。そして、プログラム38は、上述の第2「Nin1」処理と同様に、ステップS66からS68、及びステップS50、S51の処理を実行し、第3「Nin1」処理を終了する。なお、ステップS50で生成される配置画像データは、ステップS73で算出した生成ページサイズを含んでいてもよい。
【0137】
情報処理装置10のプログラム38は、図2に示されるように、第3「Nin1」処理の実行後(S26)、生成した配置画像データのファイルを示すファイルパス、或いは配置画像データのファイル自体を外部プログラム37に受け渡し(S27)、処理を終了する。
【0138】
[実施形態の作用効果]
プログラム38は、複数のスキャン画像を配置ページに配置して配置画像データを生成する。すなわち、プログラム38は、ユーザが指定したN個の画像を1ページの等分した領域に配置するのではなく、複数のスキャン画像を、「行」が示す方向に並べて、かつユーザが指定したサイズの配置ページに配置可能な限り配置して、配置画像データを生成する。したがって、プログラム38は、等分した領域への配置に限定することなく、複数の画像を配置した配置画像データを生成することができる。
【0139】
また、プログラム38は、スキャン画像を「行」が示す方向に並べることができないと判断すると(S42:No)、スキャン画像を「列」が示す方向に並べて配置する(S49)。したがって、プログラム38は、スキャン画像を「列」が示す方向に並べて配置しない場合に比べ、より多くのスキャン画像を配置ページに配置することができる。
【0140】
また、プログラム38は、ユーザが指定する幅マージン及び高さマージンを取得して(S13)、取得した幅マージン及び高さマージンだけスキャン画像同士を離間させて配置ページに配置する。したがって、プログラム38は、例えば、税関係の機関が指定する幅マージン及び高さマージンで配置画像データを生成することができる。その結果、プログラム38は、ユーザが希望する配置画像データであって、例えば、税関係の機関に提出可能な配置画像データを生成することができる。
【0141】
また、プログラム38は、確定した「行」に含まれる複数の配置済画像のうち、高さ或いは幅が最も大きい配置済画像の下端或いは右端よりも下或いは右にスキャン画像を配置して、スキャン画像を並べる。したがって、プログラム38は、スキャン画像同士が重ならないようにスキャン画像を配置ページに配置することができる。
【0142】
また、プログラム38は、スキャン画像を配置ページに配置できないと判断すると(S42:No、S48:No)、ページを確定して(S52)、スキャン画像を次の配置ページに配置する(S40)。したがって、プログラム38は、スキャナ55が生成した全てのスキャン画像を配置ページに配置して配置画像データを生成することができる。
【0143】
また、プログラム38は、ユーザが設定画面においてラジオボタン87を選択したかラジオボタン88を選択したかを示す配置方向情報を取得し、取得した配置方向情報に基づいて、「行」が示す方向を、幅方向にするか高さ方向にするかを決めて、スキャン画像を配置ページに配置する。プログラム38は、ユーザが希望する配置方向でスキャン画像を配置ページに配置するので、ユーザが希望する配置画像データであって、例えば、税関係の機関に提出可能な配置画像データを生成することができる。
【0144】
また、プログラム38は、第2UIモジュール44を備えるので、外部プログラム37の第1UIモジュール42を通じて配置ページの第1ページサイズや第2ページサイズを取得することもできるし、自己の第2UIモジュール44を通じて配置ページの第1ページサイズや第2ページサイズを取得することもできる。
【0145】
また、プログラム38は、配置するスキャン画像のサイズが配置ページに配置できないサイズである場合であって(S34:No)、自己の第2UIモジュール44が使用されていると判断した場合(S36:Yes)、第2UIモジュール44を用いてエラー画面をディスプレイ24に表示させる(S37)。したがって、プログラム38は、スキャンした原稿のサイズ、或いはユーザが指定した配置ページのサイズが不適切であることをユーザに認識させることができる。
【0146】
また、プログラム38は、ユーザが「行のサイズ」を指定していないと判断すると、スキャン画像を「行」が示す方向に並べる第2「Nin1」処理を実行する。そして、プログラム38は、第2「Nin1」処理において、生成した配置画像データの生成ページサイズを算出し、算出した生成ページサイズをディスプレイ24に表示させる。したがって、プログラム38は、ユーザが「行のサイズ」を指定していない場合に、全てのスキャン画像を、「行」が示す方向に並べて1つの配置画像データを生成することができる。また、プログラム38は、生成ページサイズを算出することにより、生成した配置画像データのサイズであって、「行」が示す方向におけるサイズをユーザに認識させることができる。
【0147】
また、プログラム38は、ユーザが配置ページの「列のサイズ」を指定していないと判断すると、第3「Nin1」処理を実行する。プログラム38は、第3「Nin1」処理を実行することにより、複数のスキャン画像を配置した1つの配置画像データを生成することができる。また、プログラム38は、生成ページサイズを算出し、算出した生成ページサイズをディスプレイ24に表示させる。したがって、プログラム38は、生成した配置画像データのサイズであって、「列」が示す方向におけるサイズを、ユーザに認識させることができる。
【0148】
[変形例1]
上述の実施形態では、情報処理装置10のプログラム38が、複数のスキャン画像を配置ページに配置して配置画像データを生成する例を説明した。しかしながら、プログラム38は、写真を示す複数の画像データなど、スキャン画像データ以外の画像データが示す複数の画像を配置ページに可能な限り配置して配置画像データを生成してもよい。
【0149】
[変形例2]
上述の実施形態では、プログラム38は、1ページの配置画像データを1ファイルとして生成して出力する例を説明した。しかしながら、プログラム38は、複数のページの配置画像データを1ファイルとして出力してもよい。或いは、プログラム38は、外部プログラム37或いは第2UIモジュール44を通じて、出力する配置画像データのデータ形式の指定を取得し、取得したデータ形式で配置画像データを出力してもよい。データ形式は、バイナリ形式や、ファイル形式や、PDF形式や、HTML形式など、種々の形式を含んでいてもよい。
【0150】
[変形例3]
上述の実施形態では、プログラム38は、複数のスキャン画像を「行」が示す方向に並べ、「行」が示す方向に配置できないと判断すると(S42:No)、スキャン画像を、「列」が示す方向に並べる(S49)例を説明した。しかしながら、プログラム38は、複数のスキャン画像を「行」が示す方向にのみ並べてもよい。
【符号の説明】
【0151】
10・・・情報処理装置
11・・・複合機
31・・・CPU
32・・・メモリ
37・・・外部プログラム
38・・・プログラム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10