以下、本実施の形態について図面を参照しながら説明する。なお、機能が同じ構成要素及び処理には全図面を通して同じ符合を付与し、重複する説明を省略する。
図1は、本実施の形態に係る情報処理システム100の構成例を示す図である。図1に示すように、情報処理システム100はコンテンツサーバ10及び表示装置20を含み、コンテンツサーバ10と表示装置20は通信回線2で接続されている。
コンテンツサーバ10は、ユーザが閲覧を希望する内容を含んだデータ、すなわち「コンテンツ」を格納する情報処理装置の一例である。以降では、コンテンツサーバ10を「サーバ10」と表記する。サーバ10は、単独のコンピュータ又は複数のコンピュータを組み合わせて構築される。また、クラウドコンピューティングを用いてサーバ10を構築してもよい。
表示装置20は、閲覧したいコンテンツをサーバ10に要求し、取得したコンテンツを画面に表示する閲覧装置の一例である。表示装置20には、例えばデスクトップコンピュータ、タブレット型コンピュータ、スマートフォン、及びウェアラブル端末のように、操作を受け付ける受付機能、情報を表示する表示機能、及び通信回線2に接続してデータを送受信する通信機能を備えた情報機器が用いられる。
表示装置20からコンテンツの閲覧要求を受け付けたサーバ10は、コンテンツを要求した表示装置20に要求されたコンテンツを送信する。
通信回線2は有線回線であっても無線回線であってもよく、また、特定のユーザだけが利用する専用回線であっても、不特定多数のユーザが同じ回線を共有する公衆回線であってもよい。
なお、図1に示した情報処理システム100には1台の表示装置20しか含まれていないが、複数の表示装置20が含まれてもよい。また、情報処理システム100に複数のサーバ10が含まれてもよい。
図2は、サーバ10における機能ブロック図の一例を示す図である。サーバ10は、コンテンツ変換部11、画像処理部12、受付部13、及び送信部14の各機能部を有する。また、画像処理部12は、分割部12A、変換部12B、及び生成部12Cの各機能部を有する。
更に、サーバ10は、コンテンツ格納部15、コンテンツ情報DB16、画像処理情報DB17、連結情報DB18、表示イメージ情報DB19、及び連結データ格納部8の各記憶領域を含む。
通常「DB」は、予め定めた主キーと関連付けてデータを管理する「データベース(Database)」を意味する略号である。しかしながら、本実施の形態における「DB」とは商用及び非商用の各種データベースアプリケーションを指すものでなく、データを記憶する記憶領域のことを表している。なお、言うまでもなく、データを記憶する記憶領域の管理にデータベースアプリケーションを利用してもよい。
コンテンツ格納部15には複数のコンテンツが予め格納されており、コンテンツ格納部15に格納されているコンテンツが表示装置20からの閲覧要求によって表示装置20に送信される。
コンテンツ格納部15に格納されるコンテンツの種類に制約はないが、ここでは一例としてページ単位で構成される文書データがコンテンツ格納部15に格納されているものとして説明を行う。
コンテンツ情報DB16には、コンテンツ格納部15に格納されているコンテンツ情報が含まれる。コンテンツ情報には、例えばコンテンツID、コンテンツ名、及びコンテンツパスが含まれる。
コンテンツIDはコンテンツを一意に識別する識別子であり、コンテンツIDを指定することで1つのコンテンツが選択される。
コンテンツ名はコンテンツのタイトルであり、ユーザにコンテンツの内容を想起させる情報が設定される。例えばコンテンツのファイル名がコンテンツ名として設定される。
コンテンツパスは、コンテンツ格納部15においてコンテンツが格納されている場所を表す情報である。
すなわち、コンテンツIDが指定されると、コンテンツ情報DB16に記憶されているコンテンツ情報を参照すれば、コンテンツIDによって指定されたコンテンツがコンテンツ格納部15から得られることになる。
コンテンツ変換部11は、指定したコンテンツIDを有するコンテンツをコンテンツ格納部15から取得して、取得したコンテンツをページ単位に変換する。コンテンツ変換部11は、変換した各々のページにページ番号を割り当て、画像処理部12にコンテンツの変換終了を通知する。なお、サーバ10では、コンテンツの内容はテキスト及び図を含む画像データとして扱われることから、コンテンツに含まれるページ単位の各々の内容を「ページ画像4」ということにする。ページ画像4は本実施の形態における画像の一例である。
画像処理部12は、コンテンツ変換部11からコンテンツの変換終了を受け付けると、分割部12Aで各々のページ画像4を分割する。ページ画像4を分割した各々の画像を「分割画像6」という。分割画像6にはそれぞれ分割画像6を一意に識別するためのイメージIDが分割部12Aによって割り当てられる。
変換部12Bは、分割部12Aで分割された各々の分割画像6の表示形態を変換する。具体的には、変換部12Bは、コンテンツを要求する表示装置20に予め備えられている複数種類の変換処理のうち、少なくとも1つを分割画像6に対して実施する。「表示装置20に予め備えられている変換処理」とは、例えばプラグインモジュールやアドオンモジュールのように、表示装置20に後から追加することで表示装置20において実施されるようになった変換処理ではなく、表示装置20に標準装備されている変換処理をいう。
生成部12Cは、変換部12Bで分割画像6に対して実施した変換処理に対する逆変換処理の内容を記録した変換情報を分割画像6毎に生成する。「逆変換処理」とは、変換部12Bで変換処理が実施された分割画像6を変換前の分割画像6に戻す変換処理をいう。
また、生成部12Cは、分割画像6がページ画像4のどの位置にあった画像であるかを示す情報、すなわち、ページ画像4における分割画像6の位置情報を分割画像6毎に生成する。そして、生成部12Cは、分割画像6の変換情報、及び分割画像6の位置情報を画像処理情報として画像処理情報DB17に記憶する。
また、生成部12Cは、分割部12Aでページ画像4から分割された分割画像6を各々連結し、連結画像情報の一例である連結データを生成する。すなわち、連結データには、1つのページ画像4を構成する各々の分割画像6が含まれる。生成部12Cは生成した連結データを連結データ格納部8に格納する。
更に、生成部12Cは、連結データにおける分割画像6の連結順序、及び分割画像6の各々のデータサイズを含む連結情報を生成し、連結情報DB18に記憶する。
また、生成部12Cは、分割画像6の分割元となったページ画像4が含まれているコンテンツのコンテンツID、分割画像6の分割元となったページ画像4に割り当てられているページ番号、及び連結データ格納部8における連結データの格納先を表すイメージパスを連結データ毎に対応付けた情報(以降、「表示イメージ情報」という)を表示イメージ情報DB19に記憶する。
受付部13は、表示装置20からコンテンツの閲覧要求を受け付けると、表示イメージ情報DB19に記憶される表示イメージ情報を参照し、要求されたコンテンツをページ単位で連結データ格納部8から取得する。例えば表示装置20から特定のコンテンツの1ページ目を要求された場合、1ページ目に対応したページ画像4を分割画像6に分割して生成された連結データを連結データ格納部8から取得する。
また、受付部13は、連結データ格納部8から取得した連結データと対応付けられた画像処理情報及び連結情報を、それぞれ画像処理情報DB17及び連結情報DB18から取得し、取得した連結データ、連結情報、及び画像処理情報を送信部14に通知する。
送信部14は、受付部13から受け付けた連結データ、連結情報、及び画像処理情報を含む送信電文を表示装置20に送信する。すなわち、送信部14は、表示装置20から要求されたコンテンツを1つの電文にまとめて表示装置20に送信する。サーバ10が表示装置20に送信した送信電文には、表示装置20で表示されるページ画像4が含まれることから、以降では、特に「表示電文」ということにする。
一方、図3は、表示装置20における機能ブロック図の一例を示す図である。表示装置20は、送信部21、受信部22、復元部23、表示部24、及びブラウザ25を含む。
送信部21は、ユーザが指示したコンテンツのページ画像4を要求する閲覧要求をサーバ10に送信する。
受信部22は、送信部21で送信した閲覧要求に対する表示電文をサーバ10から受信する。
復元部23は、連結情報に含まれる分割画像6の連結順序及び分割画像6のデータサイズを参照して、連結データから各々の分割画像6を抽出する。そして、復元部23は、抽出した分割画像6の各々と対応付けられた変換情報を参照して、サーバ10の変換部12Bで変換処理が実施される前の分割画像6(変換前の分割画像6)を生成する。
更に、復元部23は、画像処理情報に含まれる位置情報を参照して、生成した変換前の分割画像6の各々を位置情報で指定された位置に配置することで、複数の分割画像6に分割されたページ画像4を復元し、復元したページ画像4を表示部24に通知する。
表示部24は、復元部23から復元したページ画像4を受け付けると、受け付けたページ画像をブラウザ25に表示する。これにより、ユーザが要求したコンテンツの内容が表示装置20に表示されることになる。
次に、図4を用いてサーバ10における電気系統の要部構成例について説明する。サーバ10は、例えばコンピュータ30を用いて構成される。
コンピュータ30は、図2に示したサーバ10の各機能部を担うCPU(Central Processing Unit)31、プログラムを記憶するROM(Read Only Memory)32、CPU31の一時的な作業領域として使用されるRAM(Random Access Memory)33、不揮発性メモリ34、及び入出力インターフェース(I/O)35を備える。そして、CPU31、ROM32、RAM33、不揮発性メモリ34、及びI/O35がバス36を介して各々接続されている。
不揮発性メモリ34は、不揮発性メモリ34に供給される電力が遮断されても、記憶した情報が維持される記憶装置の一例であり、例えば半導体メモリが用いられるが、ハードディスクを用いてもよい。
I/O35には、例えば通信ユニット37、入力ユニット38、及び表示ユニット39が接続される。
通信ユニット37は通信回線2に接続され、表示装置20と電文を送受信する通信プロトコルを備える。
入力ユニット38は、ユーザからの指示を受け付けてCPU31に通知する入力装置であり、例えばボタン、タッチパネル、キーボード、及びマウス等が用いられる。
表示ユニット39は、CPU31によって処理された情報を画像として表示する表示装置であり、例えば液晶ディスプレイ又は有機EL(Electro Luminescence)ディスプレイ等が用いられる。
図5は、表示装置20における電気系統の要部構成例を示す図である。表示装置20は、例えばコンピュータ40を用いて構成される。
コンピュータ40も図4に示したサーバ10の要部構成例と同じく、図3に示した表示装置20の各機能部を担うCPU41、プログラムを記憶するROM42、CPU41の一時的な作業領域として使用されるRAM43、電源がオフされてもデータを記憶する不揮発性メモリ44、及びI/O45を備える。そして、CPU41、ROM42、RAM43、不揮発性メモリ44、及びI/O45がバス46を介して各々接続されている。
また、I/O45に接続されるユニットも、例えば通信ユニット47、入力ユニット48、及び表示ユニット49というように、図4に示したサーバ10の要部構成例と同じである。
なお、サーバ10のI/O35、及び表示装置20のI/O45に接続されるユニットはそれぞれ図4及び図5に例示したユニットに限定されない。例えば、ユーザの声を認識する音声認識ユニット等を接続してもよい。この場合、サーバ10及び表示装置20はユーザの指示を声で受け付け、受け付けた指示に従って機能の実行を行う。
次に、図6を用いて、サーバ10の動作について詳細に説明を行う。
図6は、サーバ10のコンテンツ格納部15に新しいコンテンツが格納された場合に、CPU31によって実行される分割処理の流れの一例を示すフローチャートである。なお、コンテンツは既にページ画像4に変換されているものとして説明を行う。
分割処理を規定する情報処理プログラムは、例えばサーバ10のROM32に予め記憶されている。サーバ10のCPU31は、ROM32に記憶される情報処理プログラムを読み込み、分割処理を実行する。
まず、ステップS10において、CPU31は、コンテンツのページ画像4を1つ取得する。図7(A)は、取得したページ画像4の一例を示す図である。
ステップS20において、CPU31は、ステップS10で取得したページ画像4を格子状に分割して、予め設定された数の複数の分割画像6に分割する。図7(B)は、ページ画像4の分割例を示す図である。図7(B)の例では、CPU31はページ画像4を12個の分割画像6-1~分割画像6-12に分割しているが、複数の分割画像に分割されるのであれば特に分割数に制約はない。分割画像6-1~分割画像6-12を区別して説明する必要がない場合、各々の分割画像を「分割画像6」と表す。
なお、図7(B)の例ではページ画像4を格子状に分割したが、CPU31は必ずしもページ画像4を格子状に分割する必要はなく、他の形状に分割してもよい。例えば、分割画像6の各々の形状が異なるようにページ画像4を分割したり、ページ画像4を曲線で分割したりするようにしてもよい。
CPU31は、分割した各々の分割画像6にイメージIDを割り当てる。「イメージID」とは各々の分割画像6に一意に割り当てられる識別情報であり、分割画像6の識別に用いられる。一例として、分割画像6-1にはイメージID=1が割り当てられ、分割画像6-2にはイメージID=2が割り当てられる。以降、各々の分割画像6に順次イメージIDが割り当てられ、分割画像6-12にイメージID=12が割り当てられる。
そして、CPU31は、分割した各々の分割画像6のページ画像4における位置情報をRAM33に記憶する。ページ画像4における分割画像6の位置情報とは、当該分割画像6が分割前のページ画像4のどの位置に配置されていたかを示す情報である。例えばページ画像4の左上の頂点を原点に設定し、原点を左右方向に通過する軸をX軸、原点を上下方向に通過する軸をY軸とした場合、ページ画像4の各画素はX軸方向の値(x値)及びY軸方向の値(y値)の組み合わせ(x,y)によって表される。
したがって、例えば2次元空間における分割画像6の左上の頂点に対応する画素のx値及びy値を位置情報として記憶すれば、ページ画像4における分割画像6の位置が一意に定まる。
図7(B)の分割画像6の例では、一例として上段に位置する分割画像6-1の位置情報は(0,0)、分割画像6-2の位置情報は(256,0)、分割画像6-3の位置情報は(512,0)、及び分割画像6-4の位置情報は(768,0)で表される。また、一例として中段に位置する分割画像6-5の位置情報は(0,256)、分割画像6-6の位置情報は(256,256)、分割画像6-7の位置情報は(512,256)、及び分割画像6-8の位置情報は(768,256)で表される。更に、一例として下段に位置する分割画像6-9の位置情報は(0,512)、分割画像6-10の位置情報は(256,512)、分割画像6-11の位置情報は(512,512)、及び分割画像6-12の位置情報は(768,512)で表される。
ステップS30において、CPU31は、ステップS20で分割した各々の分割画像6から分割画像6を1つ選択し、選択した分割画像6に対して、回転処理及び反転処理の少なくとも1つを実施し、分割画像6の表示形態を変換する。分割画像6に対して回転処理が実施されるか、反転処理が実施されるか、それとも回転処理と反転処理の両方が実施されるかはCPU31によって無作為に選択される。また、回転処理における回転角、及び反転処理における反転方向もCPU31によって無作為に選択される。回転処理及び反転処理は、表示装置20のブラウザ25で実施される処理として表示装置20に予め備えられている変換処理の一例である。
その結果、図7(C)の例では、一例として上段に位置する分割画像6-1に対しては左90度回転、分割画像6-2に対しては左180度回転、分割画像6-3に対して左右反転、及び分割画像6-4に対しては左270度回転が実施されている。また、一例として中段に位置する分割画像6-5に対しては上下反転、分割画像6-6に対しては左270度回転、分割画像6-7に対して上下反転、及び分割画像6-8に対しては左90度回転が実施されている。更に、一例として下段に位置する分割画像6-9に対しては左180度回転、分割画像6-10に対しては左90度回転、分割画像6-11に対して左270度回転、及び分割画像6-12に対しては左右反転が実施されている。
CPU31は、各々の分割画像6に対して実施した変換処理の内容をRAM33に記憶する。
ステップS40において、CPU31は、選択した分割画像6にステップS20でRAM33に記憶した位置情報、及びステップS30でRAM33に記憶した変換処理の内容から作成した変換情報を対応付けた画像処理情報を生成し、生成した画像処理情報を画像処理情報DB17が設けられた不揮発性メモリ34に記憶する。
図8は、画像処理情報の一例を示す図である。図8に示すように、画像処理情報は、例えばコンテンツID、ページ番号、イメージID、位置情報(x)、位置情報(y)、及び変換内容を含む。
画像処理情報のコンテンツIDには、ステップS10で取得したページ画像4が含まれるコンテンツのコンテンツIDが設定される。
ページ番号には、ステップS10で取得したページ画像4のページ番号が設定される。
イメージIDには、ステップS30で選択した分割画像6のイメージIDが設定される。
位置情報(x)には、ステップS20でRAM33に記憶した分割画像6の位置情報のx値が設定され、位置情報(y)には、分割画像6の位置情報のy値が設定される。
変換内容には、ステップS30でRAM33に記憶した分割画像6に対する変換処理の内容とは逆の変換処理の内容が変換情報として設定される。「分割画像6に対する変換処理の内容とは逆の変換処理の内容」とは、ステップS30で変換処理が実施された分割画像6を変換前の分割画像6に戻す変換処理、すなわち、逆変換処理の内容をいう。
例えば図7(C)の場合、分割画像6-1に対する逆変換処理は右90度回転、分割画像6-2に対する逆変換処理は右180度回転、分割画像6-3に対する逆変換処理は左右反転、及び分割画像6-4に対する逆変換処理は右270度回転となる。また、分割画像6-5に対する逆変換処理は上下反転、分割画像6-6に対する逆変換処理は右270度回転、分割画像6-7に対する逆変換処理は上下反転、及び分割画像6-8に対する逆変換処理は右90度回転となる。更に、分割画像6-9に対する逆変換処理は右180度回転、分割画像6-10に対する逆変換処理は右90度回転、分割画像6-11に対する逆変換処理は右270度回転、及び分割画像6-12に対する逆変換処理は左右反転となる。
なお、図9に示すように、画像処理情報の変換内容には、ステップS30でRAM33に記憶した変換処理の内容をそのまま設定してもよい。すなわち、画像処理情報の変換内容には、ステップS30で分割画像6の表示形態が変換された後の分割画像6(変換後の分割画像6)を、ステップS30で分割画像6の表示形態が変換される前の分割画像6(変換前の分割画像6)に復元するために用いられる情報が設定されればよい。
画像処理情報の変換内容にステップS30でRAM33に記憶した変換処理の内容を設定するか、それとも逆変換処理の内容を設定するかは、予め情報処理システム100で取り決めておけばよい。ここでは一例として、画像処理情報の変換内容に分割画像6に対する逆変換処理の内容が設定されるものとして説明を行う。
ステップS50において、CPU31は、ステップS20で分割した各々の分割画像6のうち、未選択の分割画像6が存在するか否かを判定する。未選択の分割画像6が存在する場合にはステップS30に移行する。
ステップS30において、CPU31は、ステップS20で分割した各々の分割画像6から未選択の分割画像6を1つ選択し、ステップS20で分割した各々の分割画像6が全て選択されるまでステップS30~S50の処理を繰り返し実行する。これにより、表示形態を変換する変換処理が各々の分割画像6に対して実施され、ページ画像4に含まれる各々の分割画像6の位置情報及び変換情報を含む画像処理情報が不揮発性メモリ34に記憶される。
一方、ステップS50の判定処理で未選択の分割画像6が存在しないと判定された場合、ステップS60に移行する。
ステップS60において、CPU31は、分割画像6を連結する準備として、何もデータが含まれていない空の連結データを作成する。
ステップS70において、CPU31は、表示形態が変換された各々の分割画像6から分割画像6を1つ選択し、選択した分割画像6のデータサイズを取得してRAM33に記憶する。
ステップS80において、CPU31は、ステップS70で選択した分割画像6を連結データに連結する。連結データに分割画像6を連結する場合、CPU31は連結データの最後尾に分割画像6を連結する。したがって、空の連結データに連結された分割画像6は連結データの先頭に配置される。
ステップS90において、CPU31は、選択した分割画像6にステップS70で取得した分割画像6のデータサイズと、連結データにおける分割画像6の連結順序を対応付けた連結情報を生成し、生成した連結情報を連結情報DB18が設けられた不揮発性メモリ34に記憶する。
図10は、連結情報の一例を示す図である。図10に示すように、連結情報は、例えばコンテンツID、ページ番号、イメージID、連結順序、及びデータサイズを含む。
連結情報のコンテンツIDには、ステップS10で取得したページ画像4が含まれるコンテンツのコンテンツIDが設定される。
ページ番号には、ステップS10で取得したページ画像4のページ番号が設定される。
イメージIDには、ステップS70で選択した分割画像6のイメージIDが設定される。
連結順序及びデータサイズには、上述した連結データにおける分割画像6の連結順序と分割画像6のデータサイズがそれぞれ設定される。一例として、データサイズの単位は「キロバイト」とする。
ステップS100において、CPU31は、ステップS30で表示形態が変換された各々の分割画像6のうち、未選択の分割画像6が存在するか否かを判定する。未選択の分割画像6が存在する場合にはステップS70に移行する。
ステップS70において、CPU31は、ステップS30で表示形態が変換された各々の分割画像6から未選択の分割画像6を1つ選択し、表示形態が変換された各々の分割画像6が全て選択されるまでステップS70~S100の処理を繰り返し実行する。これにより、同じページ画像4に含まれ、かつ、ステップS30で表示形態が変換された各々の分割画像6を連結した連結データが生成される。
図7(D)は、分割画像6-1~分割画像6-12が連結された連結データの一例を示す図である。図7(D)では説明の便宜上、連結データに含まれる各々の分割画像6の表示内容を示しているが、連結データに含まれる分割画像6は、例えばJPEGのように画像の表示に用いられる特定のデータ形式で表されるわけではない。連結データはページ画像4を格子状に分割した分割画像6を単に連結したバイナリデータであるため、実際には図7(D)のように、分割画像6の表示内容は視認されない。換言すれば、連結データはバイナリデータで表されるため、サーバ10及び表示装置20を扱うユーザとは異なる第3者によって通信回線2を伝送する連結データが不正に検知されたとしても、画像の表示に用いられる特定のデータ形式で分割画像6を連結した場合と比較して、連結データだけから元のページ画像4を復元することが困難になる。
更に言えば、ステップS20でページ画像4の分割数を多くするほどページ画像4が細かく分割されて連結されるため、連結データだけから元のページ画像4を復元することが困難になる。
ステップS110において、CPU31は、生成された連結データを連結データ格納部8が設けられた不揮発性メモリ34に記憶する。
ステップS120において、CPU31は、ステップS110で不揮発性メモリ34に記憶した連結データと対応する表示イメージ情報を生成し、生成した表示イメージ情報を表示イメージ情報DB19が設けられた不揮発性メモリ34に記憶する。
図11は、表示イメージ情報の一例を示す図である。図11に示すように、表示イメージ情報は、コンテンツID、ページ番号、及びイメージパスを含む。
表示イメージ情報のコンテンツIDには、ステップS10で取得したページ画像4が含まれるコンテンツのコンテンツIDが設定される。
ページ番号には、ステップS10で取得したページ画像4のページ番号が設定される。
イメージパスには、不揮発性メモリ34における連結データの格納先が設定される。
図11の表示イメージ情報の場合、例えばコンテンツIDが“DOC-001”の1ページ目の連結データは、不揮発性メモリ34に設けられたフォルダ“IMG”に“IMG-001”というファイル名で記憶されていることがわかる。
ステップS130において、CPU31は、処理対象となっているコンテンツにおいて未取得のページ画像4が存在するか否かを判定する。未取得のページ画像4が存在する場合にはステップS10に移行する。
ステップS10において、CPU31は、未取得のページ画像4を1つ取得し、コンテンツに含まれる全てのページ画像4が取得されるまでステップS10~S130の処理を繰り返し実行する。これにより、コンテンツに含まれるページ画像4毎に、ページ画像4に含まれる各々の分割画像6の位置情報及び変換情報を含む画像処理情報、連結データ、並びに連結情報が生成され、不揮発性メモリ34に記憶される。
一方、ステップS130の判定処理で未取得のページ画像4が存在しないと判定された場合には、図6に示す分割処理を終了する。
なお、図7(D)の例では、分割画像6をイメージID順に連結した連結データを示しているが、イメージIDと関係なく分割画像6を無作為に選択して連結してもよいことは言うまでもない。
また、図6に示す分割処理によって生成された連結データには分割画像6しか含まれていないが、ステップS80で連結データに分割画像6を連結する場合、分割画像6と異なるデータ(「ダミーデータ」という)を無作為のタイミングで分割画像6に連結してもよい。すなわち、各々の分割画像6の間にダミーデータが連結される連結データもあれば、分割画像6の間にダミーデータが連結されている箇所が1箇所しかない連結データや、ダミーデータが全く連結されていない連結データ等を生成してもよい。また、連結データにダミーデータを連結する度に、ダミーデータのデータサイズを可変させてもよい。
連結データにダミーデータを連結した場合、分割画像6の連結情報に加えて、ダミーデータのデータサイズと、連結データにおけるダミーデータの連結順序を含む連結情報をステップS90で生成し、生成した連結情報を連結情報DB18が設けられた不揮発性メモリ34に記憶する。
ただし、例えば連結情報におけるダミーデータのイメージIDには、分割画像6のイメージIDとして用いられない値を設定し、ダミーデータと分割画像6が区別されるようにする。例えば、分割画像6のイメージIDには正の整数を割り当て、ダミーデータには負の整数を割り当てる。
次に、図12を用いて、表示装置20からコンテンツの閲覧要求を受け付けた場合におけるサーバ10の動作について詳細に説明を行う。
図12は、表示装置20からコンテンツの閲覧要求を受け付けた場合に、CPU31によって実行される送信処理の流れの一例を示すフローチャートである。なお、閲覧要求には、表示装置20で表示を行うコンテンツのコンテンツIDとページ番号が含まれているものとする。すなわち、表示装置20はページ単位でコンテンツを要求する。
送信処理を規定する情報処理プログラムは、例えばサーバ10のROM32に予め記憶されている。サーバ10のCPU31は、ROM32に記憶される情報処理プログラムを読み込み、送信処理を実行する。
ステップS200において、CPU31は、不揮発性メモリ34に記憶された表示イメージ情報を参照して、閲覧要求のコンテンツID及びページ番号で指定されたページ画像4のイメージパスを取得する。
図11の表示イメージ情報の例において、例えばコンテンツID=“DOC-001”とページ番号=“1”が指定された場合、CPU31はイメージパスとして“IMG/IMG-001”を取得する。
ステップS210において、CPU31は、ステップS200で取得したイメージパスを参照して、指定されたページ画像4と対応付けられた連結データを不揮発性メモリ34から取得する。
ステップS220において、CPU31は、閲覧要求で指定されたコンテンツIDとページ番号を含む画像処理情報を不揮発性メモリ34から取得する。
図8の画像処理情報の例において、例えばコンテンツID=“DOC-001”とページ番号=“1”が指定された場合、CPU31はイメージID=1~12で表される画像処理情報を取得する。取得した画像処理情報には、ステップS210で取得した連結データで表されるページ画像4における分割画像6の位置情報及び変換情報が含まれる。
ステップS230において、CPU31は、閲覧要求で指定されたコンテンツIDとページ番号を含む連結情報を不揮発性メモリ34から取得する。
図10の連結情報の例において、例えばコンテンツID=“DOC-001”とページ番号=“1”が指定された場合、CPU31はイメージID=1~12で表される連結情報を取得する。取得した連結情報には、ステップS210で取得した連結データを構成する分割画像6の連結順序とデータサイズが含まれる。
ステップS240において、CPU31は、ステップS210で取得した連結データ、ステップS220で取得した、連結データで表されるページ画像4における分割画像6の位置情報と変換情報を含む画像処理情報、及びステップS230で取得した、連結データを構成する分割画像6の連結順序とデータサイズを含む連結情報を用いて構成された表示電文を生成する。
ステップS250において、CPU31は通信ユニット37を制御して、ステップS240で生成した表示電文を表示装置20に送信する。
以上により図12に示す送信処理を終了する。すなわち、サーバ10は表示装置20から要求されたコンテンツを表示装置20に送信する場合、1つの表示電文で送信する。
次に、図13を用いて表示装置20の動作について詳細に説明を行う。
図13は、表示装置20で表示したいコンテンツのコンテンツIDとページ番号を指定した閲覧要求に対する表示電文をサーバ10から受信した場合に、CPU41によって実行される表示処理の流れの一例を示すフローチャートである。
表示処理を規定する閲覧プログラムは、例えば表示装置20のROM42に予め記憶されている。表示装置20のCPU41は、ROM42に記憶される閲覧プログラムを読み込み、表示処理を実行する。また、閲覧プログラムは、ブラウザ25が有する機能を利用することで表示処理を実現する。すなわち、閲覧プログラムはブラウザ25上で動作するプログラムである。閲覧プログラムからブラウザ25が有する機能を呼び出す場合、閲覧プログラムは、利用する機能毎に用意されているインターフェース関数を呼び出す。
ステップS300において、CPU41は、表示処理の対象である分割画像6を表す変数kを1に初期化する。変数kは、受信した表示電文の連結データにおける分割画像6の連結順序を表す。
ステップS310において、CPU41は、受信した表示電文の連結情報を参照して、連結データに含まれる分割画像6の連結数Mを取得する。具体的には、CPU41は、連結情報に含まれる連結順序の最大値を分割画像6の連結数Mに設定する。
ステップS320において、CPU41は、受信した表示電文の連結情報を参照して、連結順序がk番目の分割画像6のデータサイズを取得する。図10の連結情報の例においてk=1の場合、データサイズとして33キロバイトが取得されることになる。
ステップS330において、CPU41は、受信した表示電文の連結データの先頭からステップS320で取得したデータサイズ分のデータを抽出する。連結データから切り出されたデータは連結順序がk番目の分割画像6である。
ステップS330で取得した分割画像6はバイナリデータで表されていることから、ステップS340において、CPU41は、ステップS330で取得した分割画像6のデータ形式を、ブラウザ25での画像の表示に用いられる特定のデータ形式に変換する。
取得した分割画像6は、図6のステップS30で分割画像6の表示形態が変換された、いわゆる変換後の分割画像6である。
したがって、ステップS350において、CPU41は、受信した表示電文の画像処理情報を参照して、k番目の分割画像6に実施された変換処理の内容を変換情報として取得する。具体的には、CPU41は、連結情報からk番目の分割画像6に割り当てられているイメージIDを取得し、画像処理情報において、同じイメージIDが割り当てられている変換内容を変換情報として取得する。
ステップS360において、CPU41は、ステップS350で取得した変換情報を参照して、k番目の分割画像6を変換前の分割画像6に復元する。
取得した変換情報が、図8に示したように逆変換処理として設定されている場合、変換情報で表される変換内容を分割画像6にそのまま実施することにより、変換前の分割画像6が復元される。また、取得した変換情報が、図9に示したようにサーバ10で実施された変換処理の内容に設定されている場合、変換情報で表される変換内容に対する逆変換処理を分割画像6に実施することにより、変換前の分割画像6が復元される。
例えば連結順序が1番目の分割画像6の場合、分割画像6を右方向に90度回転することで、変換前の分割画像6が復元される。
なお、回転処理及び反転処理は、ブラウザ25に予め備えられた変換処理であり、CPU41は分割画像6を変換前の分割画像6に復元する場合、ブラウザ25に予め備えられている回転処理及び反転処理を利用してステップS360を実行する。
ステップS370において、CPU41は、ステップS350での変換情報の取得方法と同じ方法によって、受信した表示電文の画像処理情報からk番目の分割画像6の位置情報を取得する。
ステップS380において、CPU41は、ステップS370で取得した位置情報によって指定された位置にk番目の分割画像6を配置して、配置後のk番目の分割画像6をブラウザ25に表示する。これにより、k番目の分割画像6が分割前のページ画像4の対応する位置に表示される。図10の連結情報の例から、1番目の分割画像6のイメージIDは“1”であることがわかるため、図8の画像処理情報の例の場合、1番目の分割画像6に対して(0,0)の位置情報が取得される。したがって、CPU41は、分割画像6の左上の頂点がページ画像4の原点に配置されるように分割画像6を配置する。
図14は、k=1の分割画像6を用いて、上述した表示処理の流れを図示した模式図である。図14において、k=1の分割画像6は分割画像6-1である。分割画像6-1はステップS330で連結情報に基づいて連結データから抽出され、ステップS360で変換情報に基づいて変換前の分割画像6-1に復元される。そして、分割画像6-1はステップS380で位置情報に基づいてページ画像4の対応する位置に配置され、ブラウザ25上に表示される。
ステップS390において、CPU41は、処理対象となっている分割画像6の連結データにおける連結順序を表す変数kが、連結データに含まれる分割画像6の連結数Mに達したか否かを判定する。
変数kが連結数Mに達していない場合には、まだ連結データから抽出していない分割画像6が存在するためステップS400に移行する。
そして、ステップS400において、CPU41は、変数kに“1”を加算する。すなわち、CPU41は、ステップS330で連結データから抽出した分割画像6の直後に連結されている分割画像6を次の処理対象の分割画像6に指定してステップS320に移行する。
ステップS320において、CPU41は、受信した表示電文の連結情報を参照して、連結順序がk番目の分割画像6のデータサイズを取得する。そして、ステップS330において、CPU41は、(k-1)番目の分割画像6が抽出された連結データの先頭からステップS320で取得したデータサイズ分のデータを抽出する。連結データから切り出されたデータは連結順序がk番目の分割画像6である。
このように、CPU41は、連結データに含まれる全ての分割画像6が連結データから抽出されるまでステップS320~S400の処理を繰り返し実行する。これにより、図15に示すように、連結データに含まれる各々の分割画像6が変換前の分割画像6に復元され、ページ画像4の対応する位置に配置されることで、閲覧要求で要求したコンテンツのページ画像4がブラウザ25上に表示されることになる。
一方、ステップS390の判定処理で変数kが連結数Mに達したと判定された場合、すなわち、連結データに含まれる全ての分割画像6が連結データから抽出され、閲覧要求で要求したコンテンツのページ画像4がブラウザ25上に表示された場合には、図13に示す表示処理を終了する。
なお、ステップS390の判定処理で変数kが連結数Mに達したと判定された場合、CPU41は、ブラウザ25に表示されているページ画像4の上に透かし画像を重畳して配置してもよい。「透かし画像」とは画像部分以外の領域が透過領域に設定された画像であり、「透過領域」とは、ページ画像4に透かし画像を重畳した場合、ページ画像4の内容が視認される程度の透明度合いを有する領域をいう。
透かし画像における画像部分の内容はどのようなものであってもよく、例えばサーバ10にコンテンツを要求したユーザの識別情報(例えば、ユーザ名)、コンテンツの権利者名、コンテンツを表示した表示装置20を識別する識別名、又は「複製禁止」のようにページ画像4の2次利用の禁止を通知する警告文や図形が用いられる。
透かし画像を配置することで、ページ画像4がカメラ等の撮影機材で撮影されたり、スクリーンキャプチャされたりした場合でも、透かし画像を表示しない場合と比較して、コンテンツの内容が保護されることになる。
また、サーバ10が連結データにダミーデータを連結している場合には、例えばステップS320で連結情報を参照した際に、連結順序がk番目の連結情報に含まれるイメージIDがダミーデータを示すイメージIDか否かを判定すればよい。連結順序がk番目のデータがダミーデータの場合には、ステップS330で連結データの先頭からステップS320で取得したデータサイズ分のデータを抽出した後、ステップS390に移行すればよい。これにより、連結データからダミーデータが読み飛ばされ、分割画像6に対してのみステップS340~S380の処理が実施されることになる。
以上、実施の形態を用いて本発明について説明したが、本発明は実施の形態に記載の範囲には限定されない。本発明の要旨を逸脱しない範囲で実施の形態に多様な変更又は改良を加えることができ、当該変更又は改良を加えた形態も本発明の技術的範囲に含まれる。例えば、本発明の要旨を逸脱しない範囲で処理の順序を変更してもよい。
本実施の形態では、分割画像6のデータサイズに制約を設けない例について説明したが、各々の分割画像6のデータサイズがそれぞれ同じになるようにページ画像4を分割するようにしてもよい。データサイズにこうした制約を設定した場合、連結情報にデータサイズを含める必要がなくなり、表示装置20は、受信した表示電文の連結データの先頭から順に、予め定められたデータサイズ分のデータを抽出すればよい。
また、本実施の形態では、連結データにおける分割画像6の連結順序に制約を設けない例について説明したが、分割画像6の連結順序を予め定めてもよい。分割画像6の連結順序にこうした制約を設定した場合、画像処理情報に分割画像6の位置情報を含める必要がなくなり、表示装置20は、分割画像6の連結順序と予め対応付けられた位置に分割画像6を配置すればよい。
例えばページ画像4を図7(B)のように分割した場合、分割画像6-1、分割画像6-2、・・・、分割画像6-12の順に分割画像6を連結する。
分割画像6の連結順序を定めた場合、分割画像6の位置情報がなくても連結順序(すなわち、変数k)がわかれば、分割画像6がページ画像4の対応する位置に配置される。
本実施の形態では、一例としてサーバ10における分割処理及び送信処理、並びに、表示装置20における表示処理をソフトウエアで実現する形態について説明したが、図6、図12、及び図13に示したフローチャートと同等の処理を、例えばASIC(Application Specific Integrated Circuit)に実装し、ハードウエアで処理させるようにしてもよい。この場合、各処理をソフトウエアで実現した場合と比較して、処理の高速化が図られる。
また、上述した実施の形態では、情報処理プログラム及び閲覧プログラムがROMにインストールされている形態について説明したが、これに限定されるものではない。本発明に係る情報処理プログラム及び閲覧プログラムは、コンピュータ読み取り可能な記憶媒体に記録された形態で提供することも可能である。例えば、本発明に係る情報処理プログラム及び閲覧プログラムを、CD(Compact Disc)-ROM、又はDVD(Digital Versatile Disc)-ROM等の光ディスクに記録した形態で提供してもよい。また、本発明に係る情報処理プログラム及び閲覧プログラムを、USBメモリ及びフラッシュメモリ等の半導体メモリに記録した形態で提供してもよい。更に、サーバ10及び表示装置20は通信回線2に接続された図示しない外部装置から、それぞれ本発明に係る情報処理プログラム及び閲覧プログラムを取得するようにしてもよい。