以下、図面に従って本発明に係る複数画像印刷最適配置システムに好適な実施形態について説明する。なお、本実施形態で用いる印刷シートは、印刷シート上の縦方向及び横方向に碁盤状に分割された画像印刷領域を有するものとする。
〔第1実施形態〕
図1は、本発明の第1実施形態を示す複数画像印刷最適配置システムの構成の一例を示すブロック図である。
図1において、1はディスプレイであり、本システムの印刷設定画面(図4)や印刷レイアウト画面(図5)を表示するためのものである。2はプリンタであり、本システムで作成したレイアウトを印刷するためのものである。3は入力装置であり、例えばキーボード,マウス等のポインティングデバイス等である。
10は、複数画像印刷最適配置装置としてのパーソナルコンピュータ(PC)本体である。
PC10において、17はディスプレイI/Fであり、ディスプレイ1への表示を制御する。18は外部I/Fであり、プリンタ2を接続するためのものである。11は入力I/Fであり、入力装置3からの入力を制御する。
PC10において、12はCPUであり、不図示のROMやハードディスク(HD)19に格納された不図示のプログラムをRAM13上等にロードして実行することにより、データ記憶部14,レイアウト作成部15,レイアウト記憶部16等を実現して、システム全体の制御を行う。
データ記憶部14は、後述する図4に示す印刷設定画面で設定されたシール用紙の縦枚数のデータを記憶するとともに、印刷設定画面で印刷セット毎に設定された画像情報および枚数情報をデータベース24,25に振り分け、その後、データベース24のデータをデータベース20,21,22に振り分ける。
レイアウト作成部15は、データベース25に振り分けられた選択画像情報および、データベース20,21,22に振り分けられた印刷セット情報に基づいて、画像データを最適にレイアウトした印刷レイアウトデータを作成する。
レイアウト記憶部16は、レイアウト作成部15で作成された印刷レイアウトデータを記憶し、後述する図5に示す印刷レイアウト画面としてディスプレイ1に表示制御する。また、レイアウト記憶部16は、印刷レイアウト画面でユーザが確認後、印刷指示がなされると、前記印刷レイアウトでの印刷をプリンタ2により実行するように制御する。
なお、データ記憶部14,レイアウト作成部15,レイアウト記憶部16は、CPU12がハードディスク(HD)19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。
上述のデータベース20〜25は、HD19に保持されている。ここで、図2を参照して、データベース20〜25の説明を行う。
図2は、図1に示したデータベース20〜25のデータイメージを示す図である。
図2において、25は選択画像データベースであり、図4に示す印刷設定画面において、ユーザが印刷セット毎に選択した画像データの画像名と枚数を、各セットに振られたセットIDに紐付けて格納するためのものである。なお、セットIDとは、セットが設定された順に振られる番号である。
24は印刷セットデータベースであり、図4に示す印刷設定画面において、ユーザが印刷セット毎に選択した画像データの合計枚数を、各セットに振られたセットIDに紐付けて格納するためのものである。
20は縦枚数の倍数データベースであり、印刷セットデータベース24に格納された印刷セット情報のうち、シール紙の縦に配置できる数(シール用紙の縦枚数のデータ)の倍数の画像数を合計枚数とする印刷セット情報(セットID,合計枚数)を格納するためのものである。例えば、シール紙の縦枚数が「5」枚なら、合計枚数が「5」枚,「10」枚,「15」枚,・・・等の印刷セット情報を格納する。
21は縦枚数<画像枚数データベースであり、印刷セットデータベース24に格納された印刷セット情報のうち、シール紙の縦に配置できる数より多い画像数を合計枚数とする印刷セット情報を格納するためのものである。例えば、シール紙の縦枚数が「5」枚なら、合計枚数が「6」枚,「7」枚,「8」枚,「9」枚,「11」枚,「12」枚,「13」枚,「14」枚,「16」枚,・・・等の印刷セット情報を格納する。
22は縦枚数未満データベースであり、印刷セットデータベース24に格納された印刷セット情報のうち、シール紙の縦に配置できる数未満の画像数を合計枚数とする印刷セット情報を格納するためのものである。例えば、シール紙の縦枚数が「5」枚なら、合計枚数が「1」枚,「2」枚,「3」枚,「4」枚の印刷セット情報を格納する。
23は空白情報データベースであり、画像を配置する過程で発生する空白情報を格納する。なお、空白情報とは、印刷レイアウトを縦方向に決定していく段階で、余白となってしまった部分である。
以下、図3〜図20を参照して、本発明の複数画像印刷最適配置システムにおける複数画像印刷最適配置処理について説明する。
図3は、本発明の複数画像印刷最適配置システムにおける第1の制御処理手順の一例を示すフローチャートであり、本システムの全体の流れを示す。なお、このフローチャートの処理は、CPU12がHD19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、s1〜s7は各ステップを示す。
まず、アプリケーション起動指示が入力されると、ステップs1において、CPU12は、アプリケーションを起動する。そして、ステップs2において、CPU12は、図4の印刷設定画面をディスプレイ1に表示し、入力装置3からの画像設定の入力を受け付ける。ここで、印刷設定画面について説明する。
図4は、本発明の複数画像印刷最適配置システムにおける印刷設定画面の一例を示す図である。
図4において、f6はシールの縦枚数を設定するための入力エリアである。f1は各画像の印刷枚数を設定するための入力エリアである。f2は「セット作成」ボタンであり、このボタンを押下指示することで、リストボックスf3に印刷セットが追加される。このとき、同じセットを複数作成したい場合は、セット数入力エリアf5にてセット数を設定し、「セット作成」ボタンf2を押下指示することで、同じ内容のセットが複数設定する事も可能である。
f7は縦に切ることを意識してレイアウトを行う「縦切り優先レイアウト」と用紙を節約するために極力つめてレイアウトを行う「用紙節約レイアウト」の選択を行うラジオボタンである。
f4は「印刷レイアウト」ボタンであり、このボタンを押下することにより、レイアウト結果が表示される。なお、印刷設定画面での設定内容がデータ記憶部14に保存される。
以下、図3のフローチャートの説明に戻る。
ステップs2で、印刷設定画面での画像設定が入力されて「印刷レイアウト」ボタンf4がクリック指示されると、CPU12は、該印刷設定画面で設定された情報を取得してRAM13内に格納し、ステップs3に処理を進める。
ステップs3にて、CPU12は、ステップs2で取得された情報に基づいて、セット印刷設定の有無を判定し、セット印刷有りと判定した場合には、ステップs4において、画像データ並び替え処理を実行して印刷レイアウトデータを生成し、ステップs5に処理を進める。なお、この画像データ並び替え処理の詳細は図6に示す。
一方、ステップs3で、CPU12が、セット印刷無しと判定した場合には、そのままステップs5に処理を進める。
次に、ステップs5では、CPU12は、ステップs4で生成された印刷レイアウトデータに基づいて図5に示すような印刷レイアウト画面をディスプレイ1に表示して、並び替え後の印刷レイアウトをユーザに提示し、ユーザからの印刷指示を待機する。ここで、印刷レイアウト画面について説明する。
図5は、本発明の複数画像印刷最適配置システムにおける印刷レイアウト画面の一例を示す図である。
図5において、g1は印刷レイアウトであり、印刷セットごとに境界線が表示され、どのように配置されたかを確認することが可能である。「前ページ」ボタン87,「次ページ」ボタンg8を押下指示することにより、前ページ,次ページを表示可能である。
g6は「戻る」ボタンであり、このボタンを押下指示することにより、再度、画像選択画面(図4)に戻ることができる。g4はリストボックスであり、画像選択画面(図4)で設定された印刷セットの一覧を表示する。
g5は「印刷」ボタンであり、このボタンを押下指示することにより、g1に表示されている印刷レイアウトでの印刷を実行することができる。
以下、図3のフローチャートの説明に戻る。
ステップs6において、CPU12が、「印刷」ボタンg5が押下されて印刷指示がなされたと判定した場合には、ステップs7に処理を進める。
そして、ステップs7では、レイアウト記憶部16(CPU12により実行される)は、レイアウト記憶部16が記憶する印刷レイアウトでの印刷処理を実行し、処理を終了する。
図6は、本発明の複数画像印刷最適配置システムにおける第2の制御処理手順の一例を示すフローチャートであり、図3のステップs4の画像データ並び替え処理に対応する。なお、このフローチャートの処理は、CPU12がHD18に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、t1〜t4は各ステップを示し、t1〜t3はデータ記憶部14の処理に対応し、t4はレイアウト作成部15の処理に対応する。
まず、ステップt1において、データ記憶部14は、シール紙の縦枚数を取得する。
次に、ステップt2において、データ記憶部14は、印刷設定画面で印刷セット毎に設定された画像情報(印刷する画像の組み合わせ等)および枚数情報をデータベース24,25に振り分ける。
次に、ステップt3において、データ記憶部14は、データベース24に格納した印刷セット情報をデータベース20〜22に振り分ける(グループ化する)データ振り分け処理を行う。このデータ振り分け処理の詳細は図8に示す。
次に、ステップt4において、レイアウト作成部15は、ステップt3で振り分けられたデータに基づいて、画像配置処理を実行して印刷レイアウトデータを生成する。なお、この画像配置処理の詳細は図9に示す。そして、処理を終了する。
図7A,図7B,図7Cは、データ記憶部14がデータベース24,25に印刷する画像の組み合わせ、枚数等のデータ等の設定データを振り分けるイメージを説明する模式図である。なお、図中、セット6〜14の情報は省略してある。
図7Aは、ユーザが印刷設定画面(図4)で設定した画像、およびセットの一覧を表にしたものである。
ユーザがセット1として画像0001,画像0002,画像0004,画像0008を選択、セット2として画像0001,画像0002,画像0004,画像0008を選択、というように図7Aの(a)のようにセット15までセットを作成した場合、図6ステップt2の処理として、データ記憶部14がデータベース24に、各セットの合計枚数をそれぞれ算出し、該合計枚数とセットIDをセット数分格納する(図7Bの(b))。
このとき、データ記憶部14が、データベース25には図7Cの(c)のように、それぞれのセットIDに対応する画像データと枚数を格納していく。
図8は、本発明の複数画像印刷最適配置システムにおける第3の制御処理手順の一例を示すフローチャートであり、図6のステップt3のデータ振り分け処理に対応する。なお、このフローチャートの処理は、CPU12がHD19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、u1〜u8は各ステップを示し、データ記憶部14の処理に対応する。
まず、ステップu1において、データ記憶部14は、データベース24から1つデータを取得し、該データの「合計枚数」が、シール紙の縦方向に印刷できる枚数(以下「n」枚とする)以上の値であるか判定し、「n」未満であると判定した場合には、ステップu5において、データ記憶部14は、当該データをデータベース22に格納する。そして、ステップu6に処理を進める。
一方、ステップu1で、当該データの「合計枚数」が「n」以上であると判定した場合には、データ記憶部14は、ステップu2に処理を進める。
そして、ステップu2では、データ記憶部14は、当該データの「合計枚数」が、「n」の倍数であるか判定し、「n」の倍数でないと判定した場合には、ステップu4において、データ記憶部14は、当該データをデータベース21に格納する。そして、ステップu6に処理を進める。
一方、ステップu2で、当該データの「合計枚数」が「n」の倍数であると判定した場合には、データ記憶部14は、ステップu3に処理を進め、当該データをデータベース20に格納する。そして、ステップu6に処理を進める。
そして、ステップu6では、データ記憶部14は、データベース24にあるデータが全てデータベース20,21,22のいずれかに格納されたか判定し、まだ全て格納されていないと判定した場合には、ステップu7に処理を進め、次のデータに移動して、ステップu1に処理を戻す。
一方、ステップu6で、データ記憶部14は、データベース24にあるデータが全てデータベース20,21,22のいずれかに格納されたと判定した場合には、ステップu8に処理を進める。
そして、ステップu8では、データ記憶部14は、データベース21,22に格納されているデータをそれぞれ枚数の多い順にソートを行い、処理を終了する。
以上のように、データベース24内のデータを、「合計枚数」が、シール紙の縦方向に印刷できる枚数「n」の倍数である第1グループ、「合計枚数」が「n」より大きい第2グループ、「合計枚数」が「n」未満の第3グループにグループ分けすることができる。
ここで、図7Bを用いて、データベース24からデータベース20,21,22にデータを振り分けるイメージを説明する。
図8のステップu1,u2の処理として、データベース24に格納されたデータは、データ記憶部14によって図7Bの(d),(e),(f)のようにデータベース20,21,22に振り分けられる。
ここで、データベース21,22では、後のレイアウト作成のために、図7Bの(g),(h)のように画像枚数の多い順で並びかえられる(図8のステップu8)。
なお、画像を表示する際は、データベース20,21,22のセットIDをキーにして、データベース25から画像データを取得する。
以下、図9〜図20を参照して、図6のステップt4の画像データ配置処理について説明する。
なお、本実施形態では、画像配置(レイアウト)は、(1)直線かつ縦方向に切断すること、(2)切断回数を減らすこと、(3)極力無駄な空白を発生させないこと、を考慮して決定している。
図9は、本発明の複数画像印刷最適配置システムにおける第4の制御処理手順の一例を示すフローチャートであり、図6のステップt4の画像データ配置処理に対応する。なお、このフローチャートの処理は、CPU12がHD19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、v1〜v7は各ステップを示し、レイアウト作成部15の処理に対応する。
まず、ステップv1において、レイアウト作成部15は、データベース20に格納された「合計枚数」が「n」の倍数のデータのレイアウトを決定する。なお、この処理の詳細は図10に示す。
次に、ステップv2において、レイアウト作成部15は、データベース21に格納されたデータで、二つのデータの「合計枚数」を合計することによって「n」の倍数になるものが存在すれば、その印刷レイアウトを決定する。なお、この処理の詳細は図12に示す。
次に、ステップv3において、レイアウト作成部15は、ステップv2でデータベース21に格納されたデータのすべての印刷レイアウト(画像配置)が決定したか否かを判定する。
そして、ステップv3で、データベース21に格納されたデータのすべての印刷レイアウト(画像配置)が決定したと判定した場合には、レイアウト作成部15は、ステップv4へ処理を進め、データベース22のデータの印刷レイアウトを決定し、処理を終了する。なお、v4の処理の詳細は図15に示す。
一方、ステップv3で、データベース21に格納されたデータで、まだ印刷レイアウト(画像配置)が決定していないものがあると判定した場合には、レイアウト作成部15は、ステップv5へ処理を進める。
ステップv5では、レイアウト作成部15は、データベース21とデータベース22のデータで、二つのデータの「合計枚数」を合計することによってnの倍数になるものが存在すれば、その印刷レイアウトを決定する。なお、この処理の詳細は図14に示す。
次に、ステップv6において、レイアウト作成部15は、データベース22のデータの印刷レイアウトを決定し(図15)ステップv7に処理を進める。
ステップステップv7では、レイアウト作成部15は、ステップv2およびステップv5で印刷レイアウトが決定しなかったデータに対して印刷レイアウトを決定する。そして、処理を終了する。なお、ステップv7の処理の詳細は図19に示す。
以下、図10,図11を参照して、図9のステップv1のデータベース20内の画像配置処理について説明する。
図10は、本発明の複数画像印刷最適配置システムにおける第5の制御処理手順の一例を示すフローチャートであり、図9のステップv1のデータベース20内の画像配置処理に対応する。なお、このフローチャートの処理は、CPU12がHD19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、a1〜a5は各ステップを示し、レイアウト作成部15の処理に対応する。
まず、ステップa1において、レイアウト作成部15は、データベース20にデータが格納されているか判定し、1つもデータが格納されていないと判定した場合には、そのまま処理を終了する。
一方、ステップa1で、データベース20に1つ以上のデータが格納されていると判定した場合には、レイアウト作成部15は、ステップa2に処理を進める。
ステップa2では、レイアウト作成部15は、データベース20のデータの先頭を検索する。そして、ステップa3において、レイアウト作成部15は、ステップa2で検索されたデータの画像のレイアウトを図11に示す『方法A』で決定し、配置するように印刷レイアウトデータを生成する(以下、単に配置すると表記する)。ここで、『方法A』の詳細は図11を用いて説明する。
図11は、本実施形態のレイアウト方法の1つである『方法A』の一例を示す模式図である。なお、図中〔X(a,b,c,d,e),・・・〕は、データベース内のデータ情報を示す。また、「X」は、データ内の画像枚数を示す。さらに、「a」,「b」,「c」,「d」,「e」は、画像名を示す。また、「シール紙の縦に配置できる枚数」は「5枚」を例にして図示してある。
『方法A』は、データの"合計枚数"がnの倍数の際に選択されるレイアウト方法である。
始めにシール紙の縦方向に配置出来る数の倍数の"合計枚数"を持つデータを並べてしまうことによって、分配時に、直線でかつ縦方向に切断できる部分を多くし、さらに切断回数を少なくすることを実現している。
例えば、データベース20にデータが1つあり、その"合計枚数"が5枚であった場合、画像は、図11(a)のように、基準となる開始位置(図11では、例として左上としている)から1,2,3,・・・の順で配置を行う。
データベース20の中に複数のデータがあった場合、例えば、2つのデータがあり、それぞれ"合計枚数"が5枚,20枚であった場合は、図11(b)のように、データベース20に登録されている順で、配置を行う。
なお、画像の配置順序は、図11(c)に示した通りである。
以下、図10のフローチャートの説明に戻る。
図10のステップa3の処理が終了すると、レイアウト作成部15は、データベース20に印刷レイアウトの決定していないデータ(次のデータ)が存在するかを判定し、存在すると判定した場合には、ステップa5で次のデータに移動し、ステップa3の処理に戻る。
一方、ステップa3で、データベース20に印刷レイアウトの決定していないデータ(次のデータ)が存在しないと判定した場合には、そのまま処理を終了する。
以下、図12,図13を参照して、図9のステップv2のデータベース21内にあるデータ同士で合計画像数がnの倍数になるものの画像配置処理について説明する。
図12は、本発明の複数画像印刷最適配置システムにおける第5の制御処理手順の一例を示すフローチャートであり、図9のステップv2のデータベース21内にあるデータ同士で合計画像数がnの倍数になるものの画像配置処理に対応する。なお、このフローチャートの処理は、CPU12がHD19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、b1〜b8は各ステップを示し、レイアウト作成部15の処理に対応する。
まず、ステップb1において、レイアウト作成部15は、データベース21にデータが格納されているか判定し、1つのデータも格納されていないと判定した場合には、そのまま処理を終了する。
一方、ステップb1において、データベース21に1つ以上のデータが格納されていると判定した場合には、レイアウト作成部15は、ステップb2に処理を進める。
ステップb2では、レイアウト作成部15は、データベース21のデータの先頭を検索する。そして、ステップb3において、レイアウト作成部15は、ステップb2で検索されたデータの"合計枚数",後述するステップb7で検索されたデータの"合計枚数"と合計してn(シール紙の縦方向に印刷できる枚数)の倍数になる"合計枚数"を保持するデータを検索する。
次に、ステップb4において、レイアウト作成部15は、ステップb3で合計枚数がnの倍数になる"合計枚数"を保持するペアとなるデータが検索されたかどうか判定し、ペアとなるデータが検索された(存在する)と判定した場合には、ステップb5に処理を進める。
ステップb5では、レイアウト作成部15は、レイアウトを『方法B1』で決定し、配置する。ここで、『方法B1』の詳細は図13を用いて説明する。
図13は、本実施形態のレイアウト方法の1つである『方法B1』,『方法B2』の一例を示す模式図である。なお、図中〔X(a,b,c,d,e),・・・〕は、データベース内のデータ情報を示す。また、「X」は、データ内の画像枚数を示す。さらに、「a」,「b」,「c」,「d」,「e」は、画像名を示す。また、「シール紙の縦に配置できる枚数」は「5枚」を例にして図示してある。
『方法B1』は、データベース21にあるデータ同士で、"合計枚数"を合計するとシール紙の縦方向に配置できる数「n」の倍数になるものがあった場合に選択されるレイアウト方法である。
上述した『方法A』で並べたデータは全て"合計枚数"がnの倍数であるために、『方法B1』で画像を配置する際の、開始位置は常に、新しい列又は行になっている。
そこで、2つの"合計枚数"を合わせた枚数がnの倍数になるものを配置していくことによって、段になってしまう部分を極力少なくし、かつ、次に配置されるであろう画像に対しても、直線で切断でき、かつ切断回数を少なくすることを意識した配置になっている。
例えば、データベース21に複数のデータがあり、その中の1つのデータが11枚の"合計枚数"を保持しており、図12のステップb4で、これの"合計枚数"と合計することによって、5の倍数になるデータ(9枚の"合計枚数"を保持する)を検索した場合、図13のように、1つ目のデータの画像をまず配置していき、次にステップb4で検索された画像を配置する。
なお、『方法B2』の詳細は後述する。
以下、図12のフローチャートの説明に戻る。
図12のステップb5の処理が終了すると、レイアウト作成部15は、ステップb7に処理を進める。
一方、ステップb4で、ステップb3で合計枚数がnの倍数になる"合計枚数"を保持するペアとなるデータが検索されなかったと判定した場合には、レイアウト作成部15は、ステップb6に処理を進める。
ステップb6では、レイアウト作成部15は、レイアウトを『方法B2』または『方法E』で行うことを決定するフラグをRAM13内にデータ毎にたてる(ここでは配置は行わない)。そして、ステップb7に処理を進める。なお、『方法B2』『方法E』の詳細は後述する。
次に、ステップb7では、レイアウト作成部15は、データベース21に印刷レイアウト及び印刷レイアウト方法の決定していないデータが存在するか判定して、存在すると判定した場合には、ステップb8で次のデータに移動し、ステップb3に処理を戻す。
一方、ステップb7で、データベース21に印刷レイアウト及び印刷レイアウト方法の決定していないデータが存在しないと判定した場合には、レイアウト作成部15は、そのまま処理を終了させる。
以下、図14を参照して、図9のステップv5のデータベース21のデータとデータベース22のデータで合計画像数がnの倍数になるものの画像配置処理について説明する。
図14は、本発明の複数画像印刷最適配置システムにおける第7の制御処理手順の一例を示すフローチャートであり、図9のステップv5のデータベース21のデータとデータベース22のデータで合計画像数がnの倍数になるものの画像配置処理に対応する。なお、このフローチャートの処理は、CPU12がHD18に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、c1〜c7は各ステップを示し、レイアウト作成部15の処理に対応する。
まず、ステップc1において、レイアウト作成部15は、データベース21でまだ印刷レイアウトが決定していないものの中での先頭データを検索する。
そして、ステップc2において、レイアウト作成部15は、ステップc1で検出されたデータ,後述するステップc7で検索されたデータの"合計枚数"と合計して"合計枚数"がn(シール紙の縦方向に印刷できる枚数)の倍数になるデータをデータベース22の中から検索する。
次に、ステップc3において、レイアウト作成部15は、合計画像数がnの倍数になるデータが存在するか否かを判定し、存在すると判定した場合には、ステップc4において、レイアウト作成部15は、ステップc1,ステップc7で検索されたデータとステップc2で検索されたデータの画像の印刷レイアウトを『方法B2』で決定し、配置する。ここで、『方法B2』の詳細を図13を用いて説明する。
『方法B2』は、図12のステップb4でペアとなるデータを検索することが出来なかったが、図14のステップc2でデータベース22のデータ(シール紙の縦枚数未満の"合計枚数"を持つもの)内からペアを検索することが出来た場合に選択されるレイアウト方法である。
例えば、データベース21にまだレイアウトの決定してない9枚の"合計枚数"を保持するデータがあり、図14のステップc2で、これの"合計枚数"と合計することによって、5の倍数になるデータ(1枚の"合計枚数"を保持する)を検索した場合、図12の『方法B2』に示すように、1つ目のデータの画像をまず配置していき、次に図8ステップc2で検索された画像を配置する。
以下、図14のフローチャートの説明に戻る。
図14のステップc4の処理が終了すると、レイアウト作成部15は、ステップステップc6に処理を進める。
一方、ステップc3で、合計画像数がnの倍数になるデータが存在しなかったと判定した場合には、レイアウト作成部15は、ステップc5に処理を進める。
ステップステップc5で、レイアウト作成部15は、ステップc1及びステップc7で検索されたデータの画像を『方法E』の印刷レイアウト方法で印刷レイアウトすることを決定し、データベース21内にフラグをたてる。(ここでは配置は行わない)。そして、ステップc6に処理を進める。なお、『方法E』の詳細は後述する。
ステップc6では、レイアウト作成部15は、データベース21に印刷レイアウト及び印刷レイアウト方法の決定していないデータが存在するか判定して、存在すると判定した場合には、ステップc7において、次のデータに移動し、ステップc2に処理を戻す。
一方、ステップc6で、データベース21に印刷レイアウト及び印刷レイアウト方法の決定していないデータが存在しないと判定した場合には、そのまま処理を終了させる。
以下、図15〜図18を参照して、図9のステップv4又はv6のデータベース22内の画像配置処理について説明する。
図15は、本発明の複数画像印刷最適配置システムにおける第8の制御処理手順の一例を示すフローチャートであり、図9のステップv4又はv6のデータベース22内の画像配置処理に対応する。なお、このフローチャートの処理は、CPU12がHD19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、d1〜d17は各ステップを示し、レイアウト作成部15の処理に対応する。
まず、ステップd1において、レイアウト作成部15は、データベース22にデータが格納されているか判定し、1つのデータも格納されていないと判定した場合には、そのまま処理を終了する。
一方、ステップd1において、データベース22に1つ以上のデータが格納されていると判定した場合には、レイアウト作成部15は、ステップd2に処理を進める。
ステップd2では、レイアウト作成部15は、レイアウト方法の設定が「用紙節約レイアウト」になっているかを判定する。そして、「用紙節約レイアウト」になっていないと判定した場合には、レイアウト作成部15は、ステップd11に処理を進める。
ステップd11では、レイアウト作成部15は、「データベース22のみにデータが存在する、かつシール紙の残り列数がデータの数以上」であるか否かを判定する。そして、「データベース22のみにデータが存在する、かつシール紙の残り列数がデータの数以上」であると判定した場合には、レイアウト作成部15は、ステップd12に処理に進め、データを列の頭から『方法D』で配置し、ステップd8に処理を進める。『方法D』の詳細は後述する図18で示す。
一方、ステップd11で、「データベース22のみにデータが存在する、かつ、シール紙の残り列数がデータの数以上」でないと判定した場合には、レイアウト作成部15は、ステップd3に処理を進める。
一方、ステップd2で、レイアウト方法の設定が「用紙節約レイアウト」になっていると判定した場合には、レイアウト作成部15は、ステップd3に処理を進める。
ステップd3では、レイアウト作成部15は、データベース22で印刷レイアウトの決定していないデータの中で、一番先頭のデータの印刷レイアウトを『方法C』で決定し、配置する。詳細は後述する図16A(a)(b)で示す。
そして、ステップd4において、レイアウト作成部15は、ステップd3で配置したデータの"合計枚数"とシール紙の縦に配置できる画像数から、あと縦に何枚配置できるかを算出する。
そして、ステップd5において、レイアウト作成部15は、算出された縦に配置できる枚数以下の画像数を保持するデータが、データベース22に存在するかを検索・判定する。そして、算出画像枚数以下の画像を保持するデータが存在すると判定した場合には、レイアウト作成部15は、ステップd6において、検索された画像のレイアウトを『方法C』で決定し、配置する。詳細は後述する図16A(a)(b)で示す。
そして、ステップd7において、レイアウト作成部15は、ステップd6で配置したデータの画像数から、縦方向に印刷できる枚数が「0」枚になったかどうか判定する。そして、「0」枚になったと判定した場合には、レイアウト作成部15は、極力直線に印刷レイアウトを決定するために、空白情報を使用することはないため、ステップd8において、データベース23内の空白情報を破棄し、ステップd9に移行する。詳細は後述する図16B(d)で示す。
ステップd9では、レイアウト作成部15は、データベース22に配置が決定していないデータが存在するか否かを判定する。そして、存在すると判定した場合には、レイアウト作成部15は、ステップd10において、次のデータに移動し、ステップd2に処理を戻す。
一方、ステップd7で、縦方向に印刷できる枚数が「0」枚になっていないと判定した場合には、レイアウト作成部15は、ステップd5に処理を戻す。
一方、ステップd5で、算出された縦に配置できる枚数以下の画像数を保持するデータが、データベース22に存在しないと判定した場合には、レイアウト作成部15は、ステップd13に処理を戻進める。
ステップd13では、レイアウト作成部15は、データベース23に、現在保持している"空白情報"に今回新たに空白になった枚数を記録する。詳細は後述する図16A(c)で示す。データベース23の格納イメージの詳細は後述する図17で示す。
次に、ステップd14において、レイアウト作成部15は、ステップd13で加算された空白の合計数以下の画像数を持つデータが存在するかデータベース22を検索して判定する。そして、存在すると判定した場合には、レイアウト作成部15は、ステップd15において、データベース23の空白情報のソートを行う。詳細は後述する図17(4)(5)で示す。
その後、ステップd16において、レイアウト作成部15は、ステップd14で検索されたデータの印刷レイアウトを『方法C』で決定し、配置する。詳細は後述する図16C(f)で示す。
そして、ステップd17において、レイアウト作成部15は、現在データベース23で記憶している空白情報を破棄し、ステップd9に処理を移行させる。詳細は後述する図16C(f)(6)で示す。なお、一度空白を使用して印刷レイアウトを決定した場合は、その時点で空白情報を破棄し、極力直線かつ縦方向に印刷レイアウトを決定するために、次の画像は、新しい列の一番上から配置するようにしている。
一方、ステップd14で、ステップd13で加算された空白の合計数以下の画像数を持つデータがデータベース22に存在しないと判定した場合には、レイアウト作成部15は、処理をステップd9に移行させる。
また、ステップd9で、データベース22に配置が決定していないデータが存在しないと判定した場合には、レイアウト作成部15は、そのまま処理を終了させる。
ここで、『方法C』の詳細を図16を用いて説明する。
図16A〜図16Cは、本実施形態のレイアウト方法の1つである『方法C』の一例を示す模式図である。なお、図中〔X(a,b,c,d,e),・・・〕は、データベース内のデータ情報を示す。また、「X」は、データ内の画像枚数を示す。さらに、「a」,「b」,「c」,「d」,「e」は、画像名を示す。また、「シール紙の縦に配置できる枚数」は「5枚」を例にして図示してある。
『方法C』は、データベース22のデータのレイアウト方法である。ここでは、『シール紙の縦に配置できる枚数は5枚』を例にして説明を行う。
例えば、図15でステップd5,d6の順でフローが進んでいった場合の例が図16A(a)である。
データベース22にレイアウトが決定していないデータが複数あり、さらに、その中で一番多い画像を保持するデータの画像枚数(画像枚数:3枚)との合計値がシール紙の縦枚数と同じになる画像数を保持するデータ(画像枚数:2枚)があった場合、図16A(a)のようにレイアウトを行っている。
次に、図15で2つのデータの画像を配置した際に、縦方向にまだ画像を配置でき、さらにその縦方向に配置できる枚数と同等の画像数を保持するデータがあった場合の例が、図16A(b)である。
データベース22にレイアウトが決定していないデータが複数あり、一番多い画像を持つデータ(画像枚数:2枚)、次に多い画像数を持つデータ(画像枚数:2枚)という順序で画像を配置していった際に、図15ステップd4で算出された枚数と同等の画像数を保持するデータ(画像枚数:1枚)があった場合、図16A(b)のようにレイアウトを行っている。
次に、空白情報を利用した配置方法について以下に例を利用して説明する。
『方法C』では、まず、縦方向に並べられるだけ並べ、縦にまだ、入る場所はあるが、縦にちょうど入りきる画像数を保持するデータがない場合は、図15ステップd13にて、図15ステップd3で算出された数を空白情報に枚数を追加する。レイアウトをしていく段階で、空白情報となっている部分がデータの画像数以上あるとみなされた場合、図15ステップd16にて、空白部分を検知してレイアウトを行う。
空白情報部分に、画像を配置する際は、空白の左下から横方向に配置していく。たとえば、4個の空白情報が図16C(f)(5)のようにある場合、空白情報は図の1,2,3,4の順に使われる。この時、配置するデータの画像数が、3枚以内であれば、直線で切断することが可能である。これは、データを大きい順に配置してきたために実現できている。4枚であれば、次の1つ上の段に配置していく。なお、一度空白情報部分に画像を配置したら、図15ステップd17にて、空白情報は0枚とする。なお、図中、網掛け部分を空白情報とする。
図16A(c)に示す例のように、すべてのデータが2枚ずつの画像数であるために、縦方向にぴったり配置することはできない(図16A(c)(2),(3) ,(4))。そのため、数回データを配置していく過程で、空白情報となった部分の合計値があるデータの画像数以下になった場合、空白を利用して画像の配置を行っている(図16A(c)(5))。この配置により、紙を無駄にすることなく、直線かつ回数を少なく切断することを実現している。
図16B(d)に示す例のように、処理の際に空白が途切れてしまった際は、その空白は利用しない(図16B(d)(3))。なお、これは、シール紙に印刷できる画像枚数に満たない画像数の印刷をユーザが要求した際に発生するため、紙の無駄ということにはならない。
図16B(e)では、数回データを配置してく過程で、空白情報となった部分の合計値があるデータの画像数以下になった場合が、横方向にはすべて配置できない場合の例を示している。図16A(c)と同様に空白情報を利用し配置を行うが、横方向にはすべて印刷できないために、次の段の空白も利用している。これは、ユーザが指定した総画像枚数により必ず発生するであろう空白数よりも多い空白を発生させないためである。
図16C(f)では、数回データを配置してく過程で、空白情報となった部分の合計値があるデータの画像数以下になった場合の空白情報への画像の配置方法の例を示している。
この際、図16C(f)(6)のように下から配置していき、その上の段の空白を残す配置にすることによって、ユーザが指定した総画像枚数により必ず発生するであろう空白数紙以外には、紙を無駄にする空白を発生させることなく、かつ直線で切断することを可能にしたレイアウトを実現している。
図17は、データベース23に空白情報を格納する流れを説明する模式図である。
データベース23は、空白ID,縦(空白の縦方向の位置),横(空白の横方向の位置)の3つの情報を保持する。
図16C(f)で空白と判定されたデータをデータベース23に格納する手順を例として説明する。
図17(1)の段階では、図17(a)のように、まだデータベース23にはデータが入っていない。
図17(2)で、空白情報が出来た時点で、図17(b)のように、空白IDに1、縦に5、横にCというようにそれぞれ各データがデータベース23に格納される。
図17(3),(4)とレイアウトが決まり、空白情報が発生していくと、図17(c),(d)のように、データベース23にデータが格納されていく。データベース23内のデータは、空白情報が発生し、データベース23に新しいデータが格納された時点で(図17(4))、縦の値をキーに降順でデータを並び替える。
連続した空白情報があった場合、空白情報の左端から順にデータの配置を行う。データベース23内に格納されているデータは、空白に画像がレイアウトされた時点で破棄される。
ここで、『方法D』の詳細を図18を用いて説明する。
図18は、本実施形態のレイアウト方法の1つである『方法D』の一例を示す模式図である。なお、図中〔X(a,b,c,d,e),・・・〕は、データベース内のデータ情報を示す。また、「X」は、データ内の画像枚数を示す。さらに、「a」,「b」,「c」,「d」,「e」は、画像名を示す。また、「シール紙の縦に配置できる枚数」は「5枚」を例にして図示してある。
『方法D』は、縦切り優先レイアウト方法設定時、データベース22にのみにデータが存在する、かつシール紙の残り列がデータ数以上の時のレイアウト方法である。
画像は、図18のように、データを1列に配置し、次のデータは次の列に配置する。このことにより,ユーザはシールの切断を容易に行うことができる。
以下、図19を参照して、図9のステップv7のデータベース21で画像配置の決定していないデータに対しての画像配置処理について説明する。
図19は、本発明の複数画像印刷最適配置システムにおける第9の制御処理手順の一例を示すフローチャートであり、図9のステップv7のデータベース21で画像配置の決定していないデータに対しての画像配置処理に対応する。なお、このフローチャートの処理は、CPU12がHD19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、e1〜e4は各ステップを示し、レイアウト作成部15の処理に対応する。
まず、ステップe1において、レイアウト作成部15は、データベース21でまだ印刷レイアウトの決定していないものの先頭データを検索する。
次に、ステップe2において、レイアウト作成部15は、ステップe1で検索されたデータの画像の印刷レイアウトを『方法E』で決定し、配置する。ここで、『方法E』の詳細を図20を用いて説明する。
図20は、本実施形態のレイアウト方法の1つである『方法E』の一例を示す模式図である。
『方法E』は、データベース21のデータで、まだ印刷レイアウトの決定していないもののレイアウト方法である。
画像は、図20(a)のように、前記、シール紙の縦枚数未満の画像数を保持するデータの後から配置を行っていく。画像の配置順序は、図20(b)の通りである。
以下、図19のフローチャートの説明に戻る。
ステップe2の処理が終了すると、レイアウト作成部15は、ステップe3において、データベース21にまだ印刷レイアウトが決定していないものが存在するかどうか検索し、存在すると判定した場合には、ステップe4において、次のデータに移動し、ステップe2に処理を戻す。
一方、ステップe3で、データベース21にもう印刷レイアウトが決定していないデータは存在しないと判定した場合には、レイアウト作成部15は、そのまま処理を終了する。
なお、本実施形態では、縦方向に切断するようにレイアウト制御する構成について説明したが、横方向に切断するようにレイアウト制御するように構成してもよい。即ち、上記各制御の「縦」と「横」を反対にして、レイアウト処理するように構成してもよい。
以上示したように、本実施形態では、(1)直線かつ一方向(例えば、縦方向)に切断すること、(2)切断回数を減らすこと、(3)極力無駄な空白を発生させないこと、を考慮したレイアウトを決定することができる。
具体的には、図21に示すようになる。
図21は、従来のレイアウトと本発明のレイアウトを比較した模式図である。
従来では、(a−1),(b−2),(c−2)のように、切断回数が多かったレイアウトが、本発明では、(a−2),(b−3)のように、直線かつ縦方向に切断可能にし、切断回数を減らしたレイアウトに改善された。
また、レイアウト作成部15は、セット単位で線を引いたり、番号を振ったりするように構成してもよい。これによりユーザが視覚的に切断部分を判断することが可能である。
さらに、レイアウト作成部15は、セット内の印刷順序をユーザに指定させ、該ユーザにより指定された印刷順序でセット内の画像を印刷するように構成してもよい。
従って、ユーザにより指定された各セットを、極力一方向かつ直線で、回数を少なく切断することを考慮して、また極力無駄な空白を発生させないように、自動で(ユーザによる手作業のレイアウト操作無しに)レイアウトすることができる。そのため、複数人数に様々な画像を配布する際などでも、複雑な切断を行う必要が無くなる等の効果を奏する。
〔第2実施形態〕
以下、本発明の第2実施形態の構成について説明する。
なお、本実施形態でも上述の第1実施形態と同様に、画像配置(レイアウト)は、(1)直線かつ縦方向に切断すること、(2)切断回数を減らすこと、(3)極力無駄な空白を発生させないこと、を考慮して決定している。
〔システム構成〕
図22は、本発明の第2実施形態を示す複数画像印刷最適配置システムの構成の一例を示すブロック図であり、図1に示した第1実施形態と同一のものには同一の符号を付してある。
データ記憶部27は、図4に示した印刷設定画面で設定されたシール用紙の縦枚数のデータを記憶するとともに、印刷設定画面で印刷セット毎に設定された画像情報および枚数情報をデータベース25,26に振り分ける。
レイアウト作成部28は、データベース25に振り分けられた選択画像情報および、データベース26に振り分けられた印刷セット情報に基づいて、画像データを最適にレイアウトした印刷印刷レイアウトデータを作成する。
レイアウト記憶部16は、レイアウト作成部28で作成された印刷印刷レイアウトデータを記憶し、図5に示した印刷レイアウト画面としてディスプレイ1に表示制御する。また、レイアウト記憶部16は、印刷レイアウト画面でユーザが確認後、印刷指示がなされると、前記印刷レイアウトでの印刷をプリンタ2により実行するように制御する。
なお、データ記憶部27,レイアウト作成部28,レイアウト記憶部16は、CPU12がハードディスク(HD)19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。
上述のデータベース23,25,26は、HD19に保持されている。ここで、図23を参照して、データベース26の説明を行う。
図23は、図22に示したデータベース26のデータイメージ及び画像配置結果イメージを示す図である。
図23において、(a),(b)は、データベース26のデータイメージを示すものである。
(a),(b)において、データベース26は本実施形態における印刷セットデータベースであり、図4に示した印刷設定画面において、ユーザが印刷セット毎に選択した画像データの合計枚数を、各セットに振られたセットIDに紐付けて格納するためのものである。
なお、この印刷セットデータベース26は、各セットの画像が配置されたか否かを示す配置フラグも格納する。なお、(a)は画像配置前の状態に対応し、全てのセットの配置フラグが配置されていない状態を示す「0」となっている。また、(b)は画像配置中の状態に対応し、一部のセットの配置フラグが、配置された状態を示す「1」に変更されている。
なお、(c)は、(a),(b)に示す印刷セットデータベース26に基づいて本実施形態の画像配置処理により実際に画像配置された画像配置結果イメージに対応するものである。
〔画像データ並び替え処理〕
以下、図24〜図32を参照して、本発明の第2実施形態を示す複数画像印刷最適配置システムにおける画像データ並び替え処理について説明する。
図24は、本発明の複数画像印刷最適配置システムにおける第10の制御処理手順の一例を示すフローチャートであり、図3に示したステップs4の画像データ並び替え処理に対応する。なお、このフローチャートの処理は、CPU12がHD18に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、k1〜k4は各ステップを示し、k1,k2はデータ記憶部27の処理に対応し、k3はレイアウト作成部28の処理に対応する。
まず、ステップk1において、データ記憶部27は、シール紙の縦枚数を取得する。
次に、ステップk2において、データ記憶部27は、印刷設定画面で印刷セット毎に設定された画像情報(印刷する画像の組み合わせ等)および枚数情報をデータベース25,26に振り分ける。
次に、ステップk3において、レイアウト作成部28は、ステップk2で振り分けられたデータに基づいて、画像配置処理を実行する。なお、この画像配置処理の詳細は図25に示す。そして、処理を終了する。
〔画像配置処理〕
以下、図25〜図32を参照して、図24のステップk3の画像配置処理について説明する。
図25は、本発明の複数画像印刷最適配置システムにおける第11の制御処理手順の一例を示すフローチャートであり、図24のステップk3の画像配置処理に対応する。なお、このフローチャートの処理は、CPU12がHD19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、p1〜p6は各ステップを示し、レイアウト作成部28の処理に対応する。
まず、ステップp1において、レイアウト作成部28は、RAM13内に確保される仮想画像縦数(現在の縦数)cにユーザに設定された縦数(シール紙の縦方向に印刷できる枚数(以下「n」枚とする))を設定する。
次に、ステップp2において、レイアウト作成部28は、仮想画像縦数cが設定縦数nの半分よりも大きいか否かを判定し、仮想画像縦数cが設定縦数nの半分よりも大きいと判断した場合には、ステップp3に処理を進める。
ステップp3では、レイアウト作成部28は、データ単体配置フローを実行する。なお、データ単体配置フローの詳細は後述する図26に示す。
次に、ステップp4において、レイアウト作成部28は、データ組み合わせ配置フローを実行する。なお、データ組み合わせ配置フローの詳細は後述する図28に示す。
次に、ステップp5において、レイアウト作成部28は、仮想画像縦数cを1減算し、ステップp2に処理を戻す。
そして、ステップp2において、仮想画像縦数cが設定縦数nの半分よりも大きくないと判断した場合には、ステップp6に処理を進める。
ステップp6では、レイアウト作成部28は、残データ配置フローを実行する。なお、残データ配置フローの詳細は後述する図29に示す。
そして、ステップp6の残データ配置フローが終了すると、レイアウト作成部28は、処理を終了する。
〔データ単体配置フロー〕
図26は、本発明の複数画像印刷最適配置システムにおける第12の制御処理手順の一例を示すフローチャートであり、図25のステップp3のデータ単体配置フローに対応する。なお、このフローチャートの処理は、CPU12がHD19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、r1〜r10は各ステップを示し、レイアウト作成部28の処理に対応する。
まず、ステップr1において、レイアウト作成部28は、データベース26に未配置のデータが存在するか否かを判定し、存在しないと判断した場合には、本データ単体フローを終了する。
一方、ステップr1で、データベース26に未配置のデータが存在すると判断した場合には、レイアウト作成部28は、ステップr2に処理を進める。
ステップr2では、レイアウト作成部28は、データベース26の未配置の先頭データを取得し、RAM13内に格納する。
次に、ステップr3において、レイアウト作成部28は、ステップr2で取得したデータが、仮想画像縦数cの倍数の画像枚数を保持するデータか否かを判定し、仮想画像縦数cの倍数の画像枚数を保持するデータでないと判断した場合には、そのままステップr9に処理を進める。
一方、ステップr3で、ステップr2で取得したデータが、仮想画像縦数cの倍数の画像枚数を保持するデータであると判断した場合には、ステップr4に処理を進め、該データを碁盤状に分割された画像印刷領域に配置するように印刷レイアウトデータを生成する(以下、単に配置すると表記する)。
次に、ステップr5において、レイアウト作成部28は、ステップr4で配置したデータベース26の配置したデータの配置完了フラグを立てる(「1」に変更する)。
次に、ステップr6において、レイアウト作成部28は、仮想画像縦数cがユーザに設定された縦数nと異なるか否かを判定し、cがnと異ならない(cがnが同じ)と判断した場合には、そのままステップr9に処理を進める。
一方、ステップr6において、レイアウト作成部28は、仮想画像縦数cがユーザに設定された縦数nと異なると判断した場合には、ステップr7に処理を進める。
そして、ステップr7では、レイアウト作成部28は、ステップr4のデータ配置で発生した空白を空白データベース23に登録する。
次に、ステップr8において、レイアウト作成部28は、空白配置フローを実行する。なお、空白配置フローの詳細は後述する図27に示す。
次に、ステップr9において、レイアウト作成部28は、データベース26から未配置の次のデータを取得する。
次に、ステップr10において、レイアウト作成部28は、データベース26の末尾に達した(即ち、r9で未配置の次のデータを取得できなかった)か否かを判定し、未だ末尾に達していないと判断した場合には、ステップr3に処理を戻す。
一方、ステップr10で、データベース26の末尾に達したと判断した場合には、本データ単体配置フローを終了する。
このデータ単体配置フローでは、nが「5」の場合、c=n(即ち「5」)の状態では、図23(a)のセットIDが10,5,15,7,8の画像データが、図23(c)の2301,2301,2303,2304,2305のように配置されることになる。
また、c=n−1(即ち「4」)の状態では、図23(a)のセットIDが9の画像データが、図23(c)の2310のように配置されることになる。
さらに、c=n−2(即ち「3」)の状態では、図23(a)のセットIDが6の画像データが、図23(c)の2311のように配置されることになる。
〔空白配置フロー〕
図27は、本発明の複数画像印刷最適配置システムにおける第13の制御処理手順の一例を示すフローチャートであり、図26のステップr8,後述する図28のステップh9の空白配置フローに対応する。なお、このフローチャートの処理は、CPU12がHD19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、i1〜i5は各ステップを示し、レイアウト作成部28の処理に対応する。
まず、ステップi1において、レイアウト作成部28は、データベース26から空白データベース23に配置できる画像枚数を保持するデータを検索する。
次に、ステップi2において、レイアウト作成部28は、ステップi1で空白に配置できるデータが検索された(取得できた)か否かを判定し、取得できなかったと判断した場合には、本空白配置フローを終了する。
一方、ステップi2で、ステップi1で空白に配置できるデータが検索された(取得できた)と判断した場合には、ステップi3に処理を進める。
次に、ステップi3では、レイアウト作成部28は、ステップi1で検索(取得)されたデータを画像印刷領域に配置する。
次に、ステップi4において、レイアウト作成部28は、データベース26内のステップi3で配置したデータの配置完了フラグを立てる(「1」に変更する)。
次に、ステップi5において、レイアウト作成部28は、ステップi3でデータが配置された空白データを空白データベース23から削除し、本空白配置フローを終了する。
〔データ組み合わせ配置フロー〕
図28は、本発明の複数画像印刷最適配置システムにおける第14の制御処理手順の一例を示すフローチャートであり、図25のステップp4のデータ組み合わせ配置フローに対応する。なお、このフローチャートの処理は、CPU12がHD19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、h1〜h11は各ステップを示し、レイアウト作成部28の処理に対応する。
まず、ステップh1において、レイアウト作成部28は、データベース26に未配置のデータが存在するか否かを判定し、存在しないと判断した場合には、本データ単体フローを終了する。
一方、ステップh1で、データベース26に未配置のデータが存在すると判断した場合には、レイアウト作成部28は、ステップr2に処理を進める。
ステップh2では、レイアウト作成部28は、データベース26の未配置の先頭データを取得し、RAM13内に格納する。
次に、ステップh3において、レイアウト作成部28は、ステップh2で取得したデータの画像枚数と組み合わせて仮想画像縦数cの倍数になる画像枚数を保持する未配置のデータをデータベース26から検索する。
次に、ステップh4において、レイアウト作成部28は、ステップh3で適合するデータが取得できたか否かを判定し、取得できなかったと判断した場合には、そのままステップh11に処理を進める。
一方、ステップh4で、ステップh3で適合するデータが取得できたと判断した場合には、レイアウト作成部28は、ステップh5に処理を進め、該データをデータを画像印刷領域に配置する。
次に、ステップh6において、レイアウト作成部28は、ステップh5で配置したデータベース26内のデータの配置完了フラグを立てる(「1」に変更する)。
次に、ステップh7において、レイアウト作成部28は、仮想画像縦数cがユーザに設定された縦数nと異なるか否かを判定し、cがnと異ならない(cがnが同じ)と判断した場合には、そのままステップr9に処理を進める。
一方、ステップr6において、レイアウト作成部28は、仮想画像縦数cがユーザに設定された縦数nと異なると判断した場合には、ステップh8に処理を進める。
そして、ステップh8では、レイアウト作成部28は、ステップh5のデータ配置で発生した空白を空白データベース23に登録する。
次に、ステップh9において、レイアウト作成部28は、空白配置フローを実行する。なお、空白配置フローの詳細は図27に示す。
次に、ステップh10において、レイアウト作成部28は、データベース26から未配置の次のデータを取得する。
次に、ステップh11において、レイアウト作成部28は、データベース26の末尾に達した(即ち、h10で未配置の次のデータを取得できなかった)か否かを判定し、未だ末尾に達していないと判断した場合には、ステップh3に処理を戻す。
一方、ステップh11で、データベース26の末尾に達したと判断した場合には、本データ単体配置フローを終了する。
このデータ単体配置フローでは、nが「5」の場合、c=n(即ち「5」)の状態では、図23(a)のセットIDが13,1の画像データが組み合わされて図23(c)の2306のように配置されることになる。セットIDが14,2の画像データが組み合わされて図23(c)の2307のように配置されることになる。さらに、セットIDが11,4の画像データ組み合わされて図23(c)の2308のように配置されることになる。また、セットIDが12,3の画像データが組み合わされて図23(c)の2309のように配置されることになる。
〔残データ配置フロー〕
図28は、本発明の複数画像印刷最適配置システムにおける第15の制御処理手順の一例を示すフローチャートであり、図25のステップp16の残データ配置フローに対応する。なお、このフローチャートの処理は、CPU12がHD19に格納された不図示のプログラムをRAM13上にロードして実行することにより実現される。また、図中、j1〜j5は各ステップを示し、レイアウト作成部28の処理に対応する。
まず、ステップj1において、レイアウト作成部28は、RAM13内に確保される仮想横数(現在の横数)rを「1」に設定する。
次に、ステップj2において、レイアウト作成部28は、データベース26から未配置データが存在するか否かを判定し、存在しないと判断した場合には、本残データ配置フローを終了する。
一方、ステップj2において、データベース26から未配置データが存在すると判断した場合には、レイアウト作成部28は、ステップj3に処理を進める。
ステップj3では、レイアウト作成部28は、データベース26から未配置データを検索する。
次に、ステップj4において、レイアウト作成部28は、空白データベース23から空白数を取得する。
次に、ステップj5において、レイアウト作成部28は、ステップj3で検索した未配置データから(空白数+(n×r))以下の画像枚数を保持するデータを検索する。
次に、ステップj6において、レイアウト作成部28は、ステップj5で検索したデータ((空白数+(n×r))以下の画像枚数を保持するデータ)の取得に成功したか否かを判定し、取得に失敗したと判断した場合には、ステップj8において、仮想横数rを「1」インクリメントして、ステップj5に処理を戻す。
一方、ステップj6において、ステップj5で検索したデータ((空白数+(n×r))以下の画像枚数を保持するデータ)の取得に成功したと判断した場合には、レイアウト作成部28は、ステップj9に処理を進める。
そして、ステップj7では、レイアウト作成部28は、ステップj5の検索で取得したデータの画像枚数が(空白数+(n×r))であるか否かを判定し、(空白数+(n×r))であると判断した場合には、ステップj9に処理を進める。
そして、ステップj9では、レイアウト作成部28は、ステップj5の検索で取得データを図30に示す「配置方法F」で画像印刷領域に配置する。
次に、ステップj10において、レイアウト作成部28は、データベース23から全空白データ(即ち、使用した空白のデータ)を削除し、ステップj11に処理を進める。ここで、図30を用いて「配置方法F」について説明する。
図30は、本実施形態のレイアウト方法の1つである「配置方法F」を説明するための模式図である。
図30に示すように、配置するデータの画像枚数が「空白数+(n×r)」(図30の例では「1+(5×2)=11」)である場合、空白を全て使用してデータを配置する。よって、配置方法Fの場合、新たな空白はできない。
以下、図29のフローチャートの説明に戻る。
一方、ステップj7において、ステップj5の検索で取得したデータの画像枚数が(空白数+(n×r)でないと判断した場合には、ステップj12に処理を進める。
そして、ステップj12では、レイアウト作成部28は、ステップj5の検索で取得したデータの画像枚数が(n×r)以下であるか否かを判定し、(n×r)以下であると判断した場合には、ステップj13に処理を進める。
そして、ステップj13では、レイアウト作成部28は、ステップj5の検索で取得データを図31に示す「配置方法G」で画像印刷領域に配置する。
次に、ステップj14において、レイアウト作成部28は、データベース23から全空白データ(即ち、使用しなかった空白のデータ)を削除する。
次に、ステップj15において、レイアウト作成部28は、ステップj13のデータ配置で新たにできた空白をデータベース23に登録し、ステップj11に処理を進める。ここで、図31を用いて「配置方法G」について説明する。
図31は、本実施形態の配置方法Gを説明するための模式図である。
図31に示すように、配置するデータの画像枚数が「n×r」以下(図31の例では「5×2=10」以下)である場合、空白を全く使用せずに新たな列にデータを配置する。そして、使用しなかった空白は削除する。なお、この配置方法では、図31に示すように、配置するデータの画像枚数が「n×r」以下であるため、新たな空白ができる。
以下、図29のフローチャートの説明に戻る。
一方、ステップj12において、ステップj5の検索で取得したデータの画像枚数が(n×r)以下でない((n×r)より大きい)と判断した場合には、ステップj16に処理を進める。
そして、ステップj16では、レイアウト作成部28は、ステップj5の検索で取得データを図32に示す「方法H」で画像印刷領域に配置する。
次に、ステップj17において、レイアウト作成部28は、データベース23から全空白データ(即ち、使用した空白のデータと使用しなかた空白のデータ)を削除し、ステップj11に処理を進める。ここで、図32を用いて「配置方法H」について説明する。
図32は、本実施形態の「配置方法H」を説明するための模式図である。
図32に示すように、配置するデータの画像枚数が「n×r」より大きい(図32の例では「5×2=10」より大きい)場合、空白の一部を使用して新たな列に新たな空白ができないようにデータを配置する。そして、使用しなかった空白は削除する。
以下、図29のフローチャートの説明に戻る。
ステップj11では、レイアウト作成部28は、ステップj9、j13、又はj16で配置したデータベース26内のデータの配置完了フラグを立て(「1」に変更し)、ステップj1に処理を戻す。
そしてステップj2で、データベース26から未配置データが存在しなくなると、レイアウト作成部28は、本残データ配置フローを終了する。
なお、本実施形態では、縦方向に切断するようにレイアウト制御する構成について説明したが、横方向に切断するようにレイアウト制御するように構成してもよい。即ち、上記各制御の「縦」と「横」を反対にして、レイアウト処理するように構成してもよい。
以上示したように、本実施形態では、(1)直線かつ一方向(例えば、縦方向)に切断すること、(2)切断回数を減らすこと、(3)極力無駄な空白を発生させないこと、を考慮したレイアウトを決定することができる。
本実施形態においても、上記第1実施形態と同様に、ユーザにより指定された各セットを、極力一方向かつ直線で、回数を少なく切断することを考慮して、また極力無駄な空白を発生させないように、自動で(ユーザによる手作業のレイアウト操作無しに)レイアウトすることができる。そのため、複数人数に様々な画像を配布する際などでも、複雑な切断を行う必要が無くなる等の効果を奏する。
なお、本実施形態では、図25のステップp2において、「仮想画像縦枚数cが「縦枚数nの1/2」より大きい場合」のみ、p3のデータ単体配置フロー,P4のデータ組み合わせ配置フローを実行する構成について説明した。しかしながら、ステップp2の判定は「仮想画像縦枚数cが「縦枚数nの1/2」より大きい場合」に限られるものではなく、「仮想画像縦枚数cが「一定値」より大きい場合」であればよい。但し、この「一定値」をあまり小さい値としてしまうと、横長な配置になってしまい、上部に空白が大きく出来てしまう恐れがあるため、第1実施形態では「一定値」の一例として「縦枚数nの1/2」とする構成をとっている。よって、この「一定値」を変更することは単なる設計事項であり、該「一定値」を「縦枚数nの1/2」以外に変更した発明も本発明に含まれるものである。
もちろん、仮想画像縦枚数cが「0」より大きい間は、p3のデータ単体配置フロー,P4のデータ組み合わせ配置フローを実行し、仮想画像縦枚数cが「0」になった際に、p6の残データ配置フローを実行するように構成してもよいことはいうまでもない。
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されることは言うまでもない。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
以下、図33に示すメモリマップを参照して本発明に係る画像データ配置装置(複数画像印刷最適配置装置10)で読み取り可能なデータ処理プログラムの構成について説明する。
図33は、本発明に係る画像データ配置装置(複数画像印刷最適配置装置10)で読み取り可能な各種データ処理プログラムを格納する記録媒体(記憶媒体)のメモリマップを説明する図である。
なお、特に図示しないが、記録媒体に記憶されるプログラム群を管理する情報、例えばバージョン情報,作成者等も記憶され、かつ、プログラム読み出し側のOS等に依存する情報、例えばプログラムを識別表示するアイコン等も記憶される場合もある。
さらに、各種プログラムに従属するデータも上記ディレクトリに管理されている。また、インストールするプログラムやデータが圧縮されている場合に、解凍するプログラム等も記憶される場合もある。
本実施形態における図3,図6,図9,図10,図12,図15,図19,図24,図25,図26,図27,図28,図29に示す機能が外部からインストールされるプログラムによって、ホストコンピュータにより遂行されていてもよい。そして、その場合、CD−ROMやフラッシュメモリやFD等の記録媒体により、あるいはネットワークを介して外部の記録媒体から、プログラムを含む情報群を出力装置に供給される場合でも本発明は適用されるものである。
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,DVD−ROM,磁気テープ,不揮発性のメモリカード,ROM,EEPROM,シリコンディスク等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。また、本発明は、システムあるいは装置にプログラムを供給することによって達成される場合にも適応できることは言うまでもない。この場合、本発明を達成するためのソフトウェアによって表されるプログラムを格納した記録媒体を該システムあるいは装置に読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
さらに、本発明を達成するためのソフトウェアによって表されるプログラムをネットワーク上のサーバ,データベース等から通信プログラムによりダウンロードして読み出すことによって、そのシステムあるいは装置が、本発明の効果を享受することが可能となる。
なお、上述した各実施形態およびその変形例を組み合わせた構成も全て本発明に含まれるものである。