JP4529501B2 - プリンタ、画像印刷システムおよび印刷方法 - Google Patents

プリンタ、画像印刷システムおよび印刷方法 Download PDF

Info

Publication number
JP4529501B2
JP4529501B2 JP2004078294A JP2004078294A JP4529501B2 JP 4529501 B2 JP4529501 B2 JP 4529501B2 JP 2004078294 A JP2004078294 A JP 2004078294A JP 2004078294 A JP2004078294 A JP 2004078294A JP 4529501 B2 JP4529501 B2 JP 4529501B2
Authority
JP
Japan
Prior art keywords
data
image data
image
buffer
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004078294A
Other languages
English (en)
Other versions
JP2005262651A (ja
Inventor
義奈朗 北原
高文 樋口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2004078294A priority Critical patent/JP4529501B2/ja
Publication of JP2005262651A publication Critical patent/JP2005262651A/ja
Application granted granted Critical
Publication of JP4529501B2 publication Critical patent/JP4529501B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Record Information Processing For Printing (AREA)

Description

本発明は、プリンタ、画像印刷システムおよび印刷方法に関する。
特許文献1および特許文献2には、印刷システムが開示されている。これらの従来の印刷システムは、USBストレージクラスデバイスのデジタルカメラと、USBホストのプリンタとを、USB(Universal Serial Bus)で直接に接続する。そして、この従来の印刷システムでは、カメラは、そのボタンへの操作に応じてプリンタに対する印刷要求を生成し、プリンタは、この要求に基づいて印刷処理に必要となる画像データのファイルをカメラから読み込み、その画像データに基づいて画像を印刷する。
特開2003−259274号公報(図面、発明の詳細な説明) 特開2002−56676号公報(図面、発明の詳細な説明)
ところで、従来の印刷システムにおいて、プリンタは、カメラに保存されている画像データのファイルを読み込んで、この画像データに基づく画像を印刷する。
そのため、このプリンタにバッファメモリを設け、そのバッファメモリに画像データのファイルをまとめて読み込み、そのバッファメモリから印刷に必要となるデータを読み出すようにすれば、画像の印刷に必要となるデータが発生するたびにカメラから画像データを読み込む必要がなくなるので、印刷時間が短縮される。
また、このようなバッファメモリをプリンタに設けたとしても、バッファメモリのサイズより大きなデータ量を有する画像データは、このバッファメモリに複数回にわけて読み込むことで、その画像データを印刷することができる。
しかしながら、このようなバッファメモリをプリンタに設けたとしても、そのバッファメモリのサイズより大きなデータ量を有する画像データの画像を90度回転して印刷する場合にあっては、一定以上の印刷時間の短縮効果を期待することはできない。これは、以下の理由による。
半導体メモリに記憶されている画像データは、1ピクセル単位でのデータが集められたデータ、あるいは、数ピクセル毎のブロック単位でのデータが集められたデータになっている。また、その複数のピクセル単位のデータあるいは複数のブロック単位のデータは、画像データファイルでは、画像の行ごとに整列して格納されている。
プリンタでは、キャリッジの走査に基づいて、画像の印刷に必要となるデータが発生する。そのため、画像データファィルの画像を90度回転して印刷する場合、プリンタは、キャリッジの1走査分の印刷制御データを生成するために、画像データ内で別々の行に離散的に格納されているデータを順次利用する必要がある。
そして、印刷に使用する画像データを複数回にわけてバッファメモリに読み込んでいる場合において、キャリッジのある1走査分の印刷制御データの生成が完了した後に、その次のキャリッジのある1走査分の印刷制御データの生成を開始するとき、そのときに必要となる画像データがバッファメモリに残っていないことがある。その場合には、再度、カメラから画像データを読み込む必要が生じる。
したがって、プリンタは、画像データファイルによる画像を90度回転して印刷する場合には、キャリッジの1走査分の印刷制御データを生成するたびにカメラからバッファメモリへの画像データの読み込みが頻繁に発生する。このため、一定以上の印刷時間の短縮効果を期待することはできない。
本発明は、以上の問題に鑑みなされたものであり、バッファメモリのサイズより大きなデータ量を有する画像データに基づく画像を回転して印刷する場合であっても、印刷時間の効果的に短縮することができるプリンタ、画像印刷システムおよび印刷方法を提供することを目的とする。
本発明に係るプリンタは、所定画素数分の高さを有する行ごとにデータが配列されている画像データを読み込んでその画像を印刷するプリンタにおいて、画像データにおける画像の行数と少なくとも同数の画像データバッファと、画像の印刷順にしたがって、印刷領域に対応するデータを要求する要求手段と、要求に係るデータが複数の画像データバッファにない場合には、その要求に係るデータを含む画像データバッファのサイズ分のデータを読み込んで、複数の画像データバッファに先読先出ルールにしたがって格納する読込手段と、要求に係るデータを要求手段へ出力する出力手段と、を有するものである。
本発明の構成では、複数の画像データバッファは、画像データにおける画像の行数と同数あるいはその行数より多い数になっている。したがって、画像を回転して印刷する場合において、たとえば読込手段が画像の一列目のデータを画像データバッファへ読み込む際に二列目のデータをいっしょに読み込み、要求手段のデータ要求に応じて二列目を印刷する際には、読込手段による画像データバッファへの読込処理をすることなく、出力手段がその一列目のデータとともに読み込んだ二列目のデータを画像データバッファから読み出して出力することができる。
その結果、この構成を採用すれば、複数の画像データバッファのサイズより大きなデータ量を有する画像データに基づく画像を回転して印刷する場合であっても、印刷時間を効果的に短縮することができる。
本発明に係る他のプリンタは、所定画素数分の高さを有する行ごとにデータが配列されている画像データを読み込んでその画像を印刷するプリンタにおいて、所定のサイズを有するバッファメモリと、画像データのデータ量がバッファメモリのサイズより大きい場合には、バッファメモリに、画像データにおける画像の行数と少なくとも同数である第一の数の画像データバッファを形成し、画像データのデータ量がバッファメモリのサイズ以下の場合には、バッファメモリに、第一の数より少ない第二の数の画像データバッファを形成する形成手段と、画像の印刷順にしたがって、印刷領域に対応するデータを要求する要求手段と、要求に係るデータが複数の画像データバッファにない場合には、その要求に係るデータを含む画像データバッファのサイズ分のデータを読み込んで、複数の画像データバッファに先読先出ルールにしたがって格納する読込手段と、要求に係るデータを要求手段へ出力する出力手段と、を有するものである。
この構成を採用すれば、画像データのデータ量がバッファメモリのサイズより大きい場合には、画像データにおける画像の行数と同数あるいはその行数より多い第一の数の画像データバッファを用いることで、印刷時間を効果的に短縮することができる。
また、この構成では、画像データのデータ量がバッファメモリのサイズ以下の場合には、その第一の数より少ない第二の数より少ない数の複数の画像データバッファを用いる。そのため、この構成を採用すれば、画像データのデータ量がバッファメモリのサイズ以下の場合には、その画像データにおける画像の行数と同数あるいはその行数より多い数の複数の画像データバッファを用いる場合にくらべて、画像供給装置からの画像データの読み込み回数を減らし、印刷時間をさらに効果的に短縮することができる。
本発明に係る第三のプリンタは、所定画素数分の高さを有する行ごとにデータが配列されている画像データを読み込んでその画像を印刷するプリンタにおいて、所定のサイズを有するバッファメモリと、画像データの行数を取得する取得手段と、バッファメモリに、取得手段により取得された通信データの行数に基づき、その行数と少なくとも同数の複数の画像データバッファを形成する形成手段と、画像の印刷順にしたがって、印刷領域に対応するデータを要求する要求手段と、要求に係るデータが複数の画像データバッファにない場合には、その要求に係るデータを含む画像データバッファのサイズ分のデータを読み込んで、複数の画像データバッファに先読先出ルールにしたがって格納する読込手段と、要求に係るデータを要求手段へ出力する出力手段と、を有するものである。
この構成を採用すれば、印刷に係る画像データにおける画像の行数と同数あるいはその行数より多い数の画像データバッファを用いるので、使用する画像データに応じた最適な印刷時間の短縮効果を期待することができる。
本発明に係る第四のプリンタは、所定画素数分の高さを有する行ごとにデータが配列されている複数の画像データを読み込んでそれらの画像をキャリッジの駆動方向に並べて印刷するプリンタにおいて、複数の画像データにおける画像の行数の総数と少なくとも同数の画像データバッファと、画像の印刷順にしたがって、印刷領域に対応するデータを要求する要求手段と、要求に係るデータが複数の画像データバッファにない場合には、その要求に係るデータむ画像データバッファのサイズ分のデータを読み込んで、複数の画像データバッファに先読先出ルールにしたがって格納する読込手段と、要求に係るデータを要求手段へ出力する出力手段と、を有するものである。
この構成では、複数の画像データバッファは、キャリッジの駆動方向に並べて印刷する画像データにおける画像の行数の総数と同数あるいはその行数の総数より多い数になっている。したがって、この構成を採用すれば、複数の画像データバッファのサイズより大きなデータ量となる複数の画像データに基づく複数の画像を回転して印刷する場合(たとえば、4upレイアウトの場合)であっても、印刷時間を効果的に短縮することができる。
本発明に係る第五のプリンタは、所定画素数分の高さを有する行ごとにデータが配列されている複数の画像データを読み込んでそれらの画像をキャリッジの駆動方向に並べて印刷するプリンタにおいて、所定のサイズを有するバッファメモリと、複数の画像データの総データ量がバッファメモリのサイズより大きい場合には、バッファメモリに、複数の画像データにおける画像の行数の総数と少なくとも同数である第一の数の画像データバッファを形成し、複数の画像データのデータ量がバッファメモリのサイズ以下の場合には、バッファメモリに、第一の数より少ない第二の数の画像データバッファを形成する形成手段と、画像の印刷順にしたがって、印刷領域に対応するデータを要求する要求手段と、要求に係るデータが複数の画像データバッファにない場合には、その要求に係るデータを含む画像データバッファのサイズ分のデータを読み込んで、複数の画像データバッファに先読先出ルールにしたがって格納する読込手段と、要求に係るデータを要求手段へ出力する出力手段と、を有するものである。
この構成を採用すれば、キャリッジの駆動方向に並べて印刷する複数の画像データの総データ量がバッファメモリのサイズより大きい場合には、それら複数の画像データにおける画像の行数の総数と同数あるいはその行数の総数より多い数の画像データバッファを用いることで、印刷時間を効果的に短縮することができる。また、この構成を採用すれば、その複数の画像データの総データ量がバッファメモリのサイズ以下の場合には、画像供給装置からの画像データの読み込み回数を減らして、印刷時間をさらに効果的に短縮することができる。
本発明に係る第六のプリンタは、所定画素数分の高さを有する行ごとにデータが配列されている複数の画像データを読み込んでそれらの画像をキャリッジの駆動方向に並べて印刷するプリンタにおいて、所定のサイズを有するバッファメモリと、画像データの行数を取得する取得手段と、バッファメモリに、取得手段により取得された画像データの行数に基づき、その行数の総数と少なくとも同数の画像データバッファを形成する形成手段と、画像の印刷順にしたがって、印刷領域に対応するデータを要求する要求手段と、要求に係るデータが複数の画像データバッファにない場合には、その要求に係るデータを含む画像データバッファのサイズ分のデータを読み込んで、複数の画像データバッファに先読先出ルールにしたがって格納する読込手段と、要求に係るデータを要求手段へ出力する出力手段と、を有するものである。
この構成を採用すれば、キャリッジの駆動方向に並べて印刷される複数の画像データにおける画像の行数の総数と同数あるいはその行数の総数より多い数の画像データバッファを用いるので、使用する複数の画像データに応じた最適な印刷時間の短縮効果を期待することができる。
本発明に係る上述したいずれか1つの発明に係るプリンタは、上述したそれぞれの発明の構成に加えて、読込手段が、要求に係るデータが先頭となるように、画像データバッファのサイズ分のデータを読み込むものである。
この構成を採用すれば、画像データバッファには、それ以降の印刷で使用するデータがより多く先読みされる。その結果、たとえば、画像データを画像データバッファのサイズごとに分割し、その分割した単位毎に画像データを読み込む場合に比べて、画像データの読み込み回数を減らし、印刷時間をさらに効果的に短縮することができる。
本発明に係る上述したいずれか1つの発明に係るプリンタは、上述したそれぞれの発明の構成に加えて、画像データが、符号化された画像データであり、要求手段が、符号化された画像データを復号化するデコーダであり、画像データバッファの数またはその上限値が、デコーダにより復号可能な一辺の画素数に基づいて決定されるものである。
この構成を採用すれば、符号化された画像データをデコードする場合に、デコードに対応する数の画像データバッファを確保できる。
本発明に係る上述したいずれか1つの発明に係るプリンタは、上述したそれぞれの発明の構成に加えて、画像データが、符号化された画像データであり、要求手段が、符号化された画像データを復号化するデコーダであり、画像データバッファの数またはその上限値が、デコーダにより復号可能な一辺の画素数および画像データの画像の縦横比に基づいて決定されるものである。
この構成を採用すれば、符号化された画像データをデコードする場合に、デコードに対応する数の画像データバッファを確保できる。
本発明に係る上述したいずれか1つの発明に係るプリンタは、上述したそれぞれの発明の構成に加えて、形成手段が、印刷時のキャリッジ駆動方向に対応する画像方向と画像データにおいて連続的に配置される画像の行の方向が90度または270度ずれている場合にのみ動作するものである。
本発明に係る画像印刷システムは、半導体メモリと第一の通信手段とを有する画像供給装置と、第一の通信手段と通信する第二の通信手段を有する上述したいずれか1つの発明に係るプリンタとを備え、半導体メモリが、画像データを格納し、プリンタの読込手段が、第一および第二の通信手段を介して半導体メモリから画像データを読み込むものである。
この構成を採用すれば、画像供給装置の第一の通信手段からプリンタの第二の通信手段へ送信される印刷に係る画像データは、その印刷に係る画像データの行数あるいは複数の画像データの行数の総数に応じた複数の画像データバッファに記憶される。その結果、この構成を採用すれば、メモリのサイズより大きなデータ量を有する画像データや、総データ量がメモリのサイズより大きくなる複数の画像データに基づく画像を回転して印刷する場合であっても、印刷時間を効果的に短縮することができる。
本発明に係る印刷方法は、所定画素数分の高さを有する行ごとにデータが配列されている画像データを読み込んでその画像を印刷する印刷方法であって、画像の印刷順にしたがって、印刷領域に対応するデータを要求するステップと、要求に係るデータが複数の画像データバッファにない場合には、その要求に係るデータを含む画像データバッファのサイズ分のデータを読み込んで、画像データにおける画像の行数と少なくとも同数の画像データバッファに先読先出ルールにしたがって格納するステップと、要求に係るデータをその要求元へ出力するステップと、を有するものである。
この方法では、印刷に係る画像データは、その画像の行数と同数あるいはその行数より多い数の複数の画像データバッファに格納され、データ要求に対してはその複数の画像データバッファからデータが出力される。したがって、この構成を採用すれば、複数の画像データバッファのサイズより大きなデータ量を有する画像データに基づく画像を回転して印刷する場合であっても、印刷時間を効果的に短縮することができる。
本発明に係る他の印刷方法は、所定画素数分の高さを有する行ごとにデータが配列されている複数の画像データを読み込んでそれらの画像をキャリッジの駆動方向に並べて印刷する印刷方法であって、画像の印刷順にしたがって、印刷領域に対応するデータを要求するステップと、要求に係るデータが複数の画像データバッファにない場合には、その要求に係るデータを含む画像データバッファのサイズ分のデータを読み込んで、複数の画像データにおける画像の行数の総数と少なくとも同数の画像データバッファに先読先出ルールにしたがって格納するステップと、要求に係るデータをその要求元へ出力するステップと、を有するものである。
この方法では、印刷に係る複数の画像データは、その複数の画像の行数の総数と同数あるいはその行数の総数より多い数の複数の画像データバッファに格納され、データ要求に対してはその複数の画像データバッファからデータが出力される。したがって、この構成を採用すれば、複数の画像データバッファのサイズより大きな総データ量となる複数の画像データに基づく画像を回転して印刷する場合であっても、印刷時間を効果的に短縮することができる。
以下、本発明の実施の形態に係るプリンタ、画像印刷システムおよび印刷方法を、図面に基づいて説明する。画像印刷システムは、ダイレクト印刷システムを例として説明する。印刷方法は、プリンタの動作の一部として説明する。
実施の形態1.
図1は、本発明の実施の形態1に係るダイレクト印刷システムを示す図である。ダイレクト印刷システムは、画像供給装置としてのデジタルスチルカメラ(DSC:Digital Still Camera)1と、プリンタ2とを有する。また、DSC1とプリンタ2とは、USBケーブル3にて接続される。
図2は、図1中のDSC1のハードウェア構成を示すブロック図である。DSC1は、プログラムを実行する中央処理装置(CPU:Central Processing Unit)11と、プログラムを記憶するフラッシュメモリ12と、I/O(Input/Output)ポート13と、これらを接続するシステムバス14とを有する。
DSC1のI/Oポート13には、撮像装置としてのCCD(Charge Coupled Device)15と、外部メモリ接続装置としてのカードリーダ16と、表示装置としての液晶モニタ17と、入力装置としての入力デバイス18と、第一の通信手段としてのUSB通信I/F(interface:インターフェース)19とが接続される。
CCD15は、受光部を有する。この受光部は、複数の受光素子を有する。この複数の受光素子は、受光部に、その全体が略長方形となるように縦方向および横方向に並べて配列されている。各受光素子は、受光光量に応じたレベル信号を出力する。CCD15は、複数の受光素子から出力されるレベル信号に基づいて、受光素子と同数のピクセルデータを生成する。また、CCD15は、この生成した複数のピクセルデータを1つの撮像データとして出力する。
カードリーダ16は、挿入部を有する。この挿入部には、カード形状に形成された半導体メモリ20を挿入することができる。カード形状に形成された半導体メモリ20としては、たとえばフラッシュメモリなどがある。そして、カードリーダ16は、挿入部に挿入されている半導体メモリ20にデータを書き込んだり、挿入部に挿入されている半導体メモリ20からデータを読み出したりする。
液晶モニタ17は、表示部を有する。液晶モニタ17は、表示データに基づいて、表示部に、その表示データに基づく画像を表示する。
入力デバイス18は、複数の入力キーやタッチパネルを有する。入力デバイス18は、ユーザがプッシュ操作した入力キーに応じた入力データを出力する。また、入力デバイス18は、タッチパネルのユーザにより押圧された位置に応じた入力データを出力する。
USB通信I/F19は、USBコネクタを有する。USBコネクタには、USBケーブル3が接続される。USB通信I/F19は、USBコネクタから信号が入力されるとその信号からデータを抽出する。また、USB通信I/F19は、送信するデータに基づいて信号を生成し、この信号をUSBコネクタへ出力する。
図3は、図2中のフラッシュメモリ12の記憶内容を示す図である。DSC1のフラッシュメモリ12には、EXIF(Exchangeable Image File Format)画像データ生成プログラム21と、印刷指示データ生成プログラム22と、画像データ送信プログラム23と、通信制御プログラム群とが記憶される。DSC1の通信制御プログラム群は、USBマスストレージクラスプログラム24とを有する。
EXIF画像データ生成プログラム21は、中央処理装置11に実行されることでEXIF画像データ生成部を実現する。EXIF画像データ生成部は、CCD15から出力された撮像データを圧縮してJPEG(Joint Photographic Coding Experts Group)形式の画像データを生成し、この画像データにEXIFヘッダやサムネイル画像データを付加したEXIF画像データを生成し、このEXIF画像データをカードリーダ16へ出力する。EXIFヘッダには、画像の縦方向のピクセル数および横方向のピクセル数、撮影条件などを含めることができる。
印刷指示データ生成プログラム22は、中央処理装置11に実行されることで印刷指示データ生成部を実現する。印刷指示データ生成部は、液晶モニタ17に画像選択画面や印刷条件選択画面を表示する。また、印刷指示データ生成部は、印刷指示データを生成する。この印刷指示データには、画像選択画面に基づいて選択された画像を、印刷条件選択画面に基づいて選択された印刷条件で印刷するための印刷指示が含まれる。
画像データ送信プログラム23は、中央処理装置11に実行されることで、送信手段としての画像データ送信部を実現する。画像データ送信部は、送信する画像データのファイルとそのファイルから抽出するデータ位置とが指定されると、そのファイルのそのデータ位置のデータを抽出する。また、画像データ送信部は、抽出したデータを出力する。
画像データのファイルは、あるデータ量を有する。このファイルのデータ位置とは、この画像ファイルの先頭ビットから数えた場合におけるそのあるビットの順番を示す値である。たとえば、データ位置として10kバイトが指定されると、画像データ送信部は、ファイルの先頭ビットから10kバイト目の所定の長さのデータを抽出する。
USBマスストレージクラスプログラム24は、中央処理装置11に実行されることでUSBマスストレージクラスを実現する。USBマスストレージクラスでは、ホストとデバイスとの間でデータをバルク転送したりすることができる。なお、本実施の形態では、サブクラスとしては、SCSIサブクラスが使用される。
図4は、図2のDSC1において撮像時に実現される機能を示すブロック図である。図4に示すように、撮像時には、DSC1においてEXIF画像データ生成部31が実現される。
CCD15は、EXIF画像データ生成部31へ撮像データを出力する。EXIF画像データ生成部31は、この撮像データをJPEG方式で圧縮し、EXIF画像データを生成する。カードリーダ16は、このEXIF画像データに所定のファイル名をつけて、このEXIF画像データを半導体メモリ20に書き込む。カードリーダ16は、半導体メモリ20内の複数のEXIF画像データのファイル同士32が互いに区別できるように、その複数のEXIF画像ファイル32には、互いに異なるファイル名を付加する。
図5は、図4中のEXIF画像データ生成部31による圧縮処理の説明図である。図5(A)は、画像における複数のピクセルの配列を説明する図である。CCD15が出力する撮像データの画像は、図5(A)に示すように、縦方向のピクセル数より横方向のピクセル数が多い、全体が横長の長方形の画像を構成するものとして説明する。
このような撮像データが入力されると、EXIF画像データ生成部31は、図5(B)に示すように、8×8ピクセルを1つのブロックとして、そのブロック毎に空間周波数を演算する。なお、1ブロックあたりのピクセル数は、8×8に限られず、たとえば16×16などであってもよい。
また、EXIF画像データ生成部31は、図5(B)に示すように、横長の画像の長辺に沿った図中上側のブロックの行から順番に、且つ、同じブロック行の中では図中左側のブロックから順番に、ブロックの空間周波数を演算する。図5(B)は、ブロックの画像上の配置を示す図である。
そして、図5(B)に示すようにm行n列(m、nは、1以上の整数)のブロックのすべてについて空間周波数を演算したら、EXIF画像データ生成部31は、空間周波数の総データ量が所定のデータ量以下となるように空間周波数のデータを間引く。EXIF画像データ生成部31は、JPEG形式のデータの総データ量が所定量以下となるまでこのデータの間引き処理を繰り返す。以上のエンコード処理によって、EXIF画像データ生成部31は、所定のデータ量以下のデータ量のJPEG形式のデータを生成する。なお、JPEG形式のデータにおいて複数のブロックのデータ量は、一定の量に揃わない。
図5(C)は、EXIF画像データ上での各ブロックのデータ配置を示す図である。EXIF画像データの先頭には、EXIFヘッダのデータが格納される。このEXIFヘッダの後には、複数のブロックのデータがそのエンコード順にしたがって格納されている。つまり、EXIFヘッダの後には、画像の左上のブロック(1)のデータが続く。画像の左上のブロック(1)のデータの次には、そのブロックの右隣りのブロック(2)のデータが続く。画像の一番上のブロック行の右端のブロック(n)のデータの次には、画像の上から二行目のブロック行の左端のブロック(n+1)のデータが続く。複数のブロックデータの最後には、画像の右下のブロック(m×n)のデータがくる。複数のブロックの後には、ファイルのデータの終わりを示すEOF(End Of File)データが格納される。
なお、このように撮像データをJPEG形式に圧縮し、その圧縮された画像データを半導体メモリ20に記憶させた場合、その画像における画像の行数は、ブロック行の行数となる。
図6は、図1中のプリンタ2のハードウェア構成を示すブロック図である。プリンタ2は、中央処理装置41と、中央処理装置41がプログラムの実行の際に利用するメモリ42と、プログラムを記憶する記憶部43と、I/Oポート44と、これらを接続するシステムバス45とを有する。
プリンタ2のI/Oポート44には、第二の通信手段としてのUSB通信I/F46と、印刷デバイス47とが接続される。プリンタ2のUSB通信I/F46は、DSC1のUSB通信I/F19と同様の機能を有するものであり、その説明を省略する。ただし、プリンタ2のUSB通信I/F46は、USBホストとして機能し、DSC1のUSB通信I/F19は、USBデバイスとして機能する。
図7は、図1中のプリンタ2の内部機構を示す透過斜視図である。印刷デバイス47は、給紙トレイ51と、給紙ローラ52と、搬送ローラ対53と、排紙トレイ54と、キャリッジ55と、キャリッジ保持部材56とを有する。給紙ローラ52と、搬送ローラ対53と、キャリッジ保持部材56と、キャリッジ55とは、プリンタ2の筐体57の内部に配設される。
給紙トレイ51には、用紙58が載置される。給紙ローラ52は、給紙トレイ51上の用紙58をニップし、給紙トレイ51内の一番上の用紙58を排紙トレイ54の方向へ送り出す。搬送ローラ対53は、この給紙トレイ51から送り出された用紙58をさらに排紙トレイ54の方向へ送る。これにより、給紙トレイ51に載置された用紙58は、1枚ずつ給紙トレイ51から排紙トレイ54へ搬送され、排紙トレイ54に排出される。
キャリッジ保持部材56は、長い棒形状に形成される。また、このキャリッジ保持部材56は、搬送ローラ対53と排紙トレイ54との間の用紙58の搬送経路の上方において、その長尺方向が搬送ローラ対53の伸在方向と略平行となる姿勢で配設される。キャリッジ55は、このキャリッジ保持部材56に移動可能に取り付けられる。これにより、キャリッジ55は、搬送ローラ対53の伸在方向に移動することができる。
キャリッジ55は、インクタンクと、複数のノズルとを有する。ノズルは、インクタンク内のインクを吐出する。また、複数のノズルは、キャリッジ55の移動方向と垂直な方向に沿って並べて形成される。なお、複数のノズルは、複数の列に分けて並べられていてもよい。
このような構成を有する印刷デバイス47は、印刷制御データに基づいて搬送ローラ対53を回転させて、キャリッジ55に対向する位置(印刷位置)に用紙58を搬送する。また、印刷デバイス47は、印刷制御データに基づいてキャリッジ55を移動させながら、所定のノズルからインクを吐出させる。そして、キャリッジ55に1印刷行分のインクを吐出させたら、印刷デバイス47は、搬送ローラ対53を回転させて用紙58をその1印刷行分だけ送る。また、印刷デバイス47は、次の印刷制御データに基づいてキャリッジ55を移動させながら、所定のノズルからインクを吐出させる。このように1印刷行ずつのキャリッジ55からのインクの吐出制御と、1印刷行ずつの用紙58送りとを交互に繰り返すことで、印刷デバイス47は、用紙58の紙面に印刷制御データに基づく画像を形成する。
また、印刷デバイス47は、用紙58へのインクの吐出が完了したら、搬送ローラ対53を回転させて、印刷位置から排紙トレイ54へ用紙58を排出する。これにより、印刷制御データに基づく画像が形成された用紙58が排紙トレイ54に排出されることになる。
図8は、図6中の記憶部43の記憶内容を示す図である。プリンタ2の記憶部43には、印刷指示データ解釈プログラム61と、キャッシュシステムプログラム62と、デコーダプログラム63と、印刷制御データ生成プログラム64と、通信制御プログラム群とが記憶される。プリンタ2の通信制御プログラム群は、USBマスストレージクラスプログラム65を有する。図9は、図1のダイレクト印刷システムに実現される機能を示すブロック図である。図8に示す各種プログラムを実行することで、図9におけるプリンタ2側の各種機能が実現される。
USBマスストレージクラスプログラム65は、中央処理装置41に実行されることでUSBマスストレージクラス95を実現する。なお、本実施の形態1では、サブクラスとしてSCSIサブクラスが使用される。
印刷指示データ解釈プログラム61は、中央処理装置41に実行されることで印刷指示データ解釈部91を実現する。印刷指示データ解釈部91は、印刷指示データを解釈して、その印刷指示データにて指定された印刷処理をプリンタ2に実行させる。
キャッシュシステムプログラム62は、中央処理装置41に実行されることで、読込手段および出力手段としてのキャッシュシステム92を実現する。キャッシュシステム92は、メモリ42にキャッシュメモリ71を生成する。このキャッシュメモリ71は、所定本数の画像データバッファとしての所定本数のキャッシュバッファ72を有する。各キャッシュバッファ72には、記憶しているデータのファイル名(ファイルID)およびデータ位置の範囲を示す情報と、キャッシュした順番(たとえば時刻)の情報とが対応付けられる。
図10は、図6中のメモリ42に生成されるキャッシュメモリ71の構成を示す図である。図10のキャッシュメモリ71は、P本のキャッシュバッファ72を有する。また、各キャッシュバッファ72は、そのサイズ分のデータを記憶する領域として生成される。
なお、キャッシュバッファ72の本数Pは、印刷可能な画像データサイズの上限値に対応する所定の大きな値とされる。たとえば、ブロックの縦横ピクセル数がhであるEXIF(JPEG)形式の画像データの場合、デコーダ93によりデコード可能な画素数(画像の一辺の画素数)がαとし、画像の縦横比が3:4とすると、Pは、値(α×3/4)/h(=α/h×3/4)の小数点以下を切り上げた整数とされる。あるいは4upの場合を想定して、たとえば、ブロックの縦横ピクセル数がhであるEXIF(JPEG)形式の画像データの場合、デコーダ93によりデコード可能な画素数(画像の一辺の画素数)がαとし、画像の縦横比が3:4とすると、Pは、値(α×3/4)/h×2(=α/h×3/2)の小数点以下を切り上げた整数とされる。
また、キャッシュシステム92は、デコーダ93からデータの出力要求があったら、まず、その取得要求に係るデータがキャッシュメモリ71に記憶されているか否かを確認する。そして、取得要求に係るデータがキャッシュメモリ71に記憶されている場合には、キャッシュシステム92は、そのデータをキャッシュメモリ71から読み出して出力する。
取得要求に係るデータがキャッシュメモリ71に記憶されていない場合には、キャッシュシステム92は、その取得要求に係るデータが先頭となるように1つのキャッシュバッファ72のサイズに等しいバイト数のデータの送信要求を生成する。なお、この送信要求では、そのキャッシュするデータのファイル名(あるいはファイルID)も指定される。
また、キャッシュシステム92は、要求したデータを受信すると、空いているキャッシュバッファ72を選択して、その選択したキャッシュバッファ72に受信したデータを格納する。なお、空いているキャッシュバッファ72が無い場合には、キャッシュシステム92は、最も早くキャッシュしたキャッシュバッファ72を選択し、その選択したキャッシュバッファ72に受信したデータを格納する。FIFO(First In First Out:先読先出)方式でキャッシュメモリ71が更新される。また、キャッシュシステム92は、その新たなデータを格納したキャッシュバッファ72からあるいはUSBホスト95から出力要求に係るデータを取得し、デコーダ93へ出力する。
図8に示すデコーダプログラム63は、中央処理装置41に実行されることで、画像の印刷順にしたがってデータを要求する要求手段としてのデコーダ93を実現する。デコーダ93は、EXIF画像データを復号化し、ロウ(RAW)画像データを生成する。復号化後の画像データでは、各ピクセルのデータが、データとしてピクセル毎に互いに独立した状態に分かれている。データがピクセル毎に分かれている画像データとしては、たとえば、ビットマップ形式の画像データ、TIFF(Tagged Image File Format)形式の画像データなどがある。
印刷制御データ生成プログラム64は、中央処理装置41に実行されることで印刷制御データ生成部94を実現する。印刷制御データ生成部94は、データがピクセル毎に分かれている画像データと印刷のレイアウト情報とに基づいて、印刷デバイス47のキャリッジ55および搬送ローラ対53を制御するための印刷制御データを生成する。
次に、以上のような構成を有するダイレクト印刷システムの動作を説明する。
DSC1のUSB通信I/F19とプリンタ2のUSB通信I/F46とがUSBケーブル3で接続される。そして、DSC1では、印刷指示データ生成部81と、画像データ送信部82と、USBマスストレージクラス83とが実現される。また、プリンタ2では、印刷指示データ解釈部91と、キャッシュシステム92と、デコーダ93と、印刷制御データ生成部94と、USBマスストレージクラス95とが実現される。キャッシュシステム92は、キャッシュメモリ71を生成する。
プリンタ2のUSB通信I/F46は、DSC1のUSB通信I/F19へ、USBのディスクリプタの送信要求を送信する。
USB通信I/F19は、このディスクリプタの送信要求に応じて、DSC1のディスクリプタを出力する。DSC1のディスクリプタは、プリンタ2のUSB通信I/F46へ送信される。プリンタ2のUSB通信I/F46は、受信したDSC1のディスクリプタに基づいて、エンドポイントと呼ばれる通信バッファを生成する。このエンドポイントには、USBマスストレージクラス83,95同士がデータをバルク転送するために使用するものが含まれている。これにより、USBのコンフィグレーション処理は、完了する。
印刷指示データ生成部81は、まず、半導体メモリ20から、半導体メモリ20に記憶されているEXIF画像ファイル32のファイル名のリストを読み込み、このファイル名のリストを割り付けたEXIF画像ファイル32の選択画面の表示データを液晶モニタ17に出力する。これにより、液晶モニタ17には、EXIF画像ファイル32の選択画面の選択画面が表示される。なお、印刷指示データ生成部81は、ファイル名の替わりにサムネイル画像を読み込み、サムネイル画像を割り付けたEXIF画像ファイル32の画像選択画面を液晶モニタ17に表示させてもよい。
ユーザは、入力キーあるいはタッチパネルを操作して、液晶モニタ17に表示されているファイル名のリストの中から、ファイル名を選択する。この選択操作に応じて、入力デバイス18は、入力データを生成する。印刷指示データ生成部81は、入力データに基づいて、ファイル名を選択する。なお、ユーザが複数のファイル名を選択する操作をした場合には、印刷指示データ生成部81は、その複数のファイル名を選択する。
画像を選択した後、印刷指示データ生成部81は、印刷条件選択画面を液晶モニタ17に表示させる。ユーザの操作に応じて入力デバイス18は、入力データを生成する。この入力データに基づいて、印刷指示データ生成部81は、印刷条件を選択する。なお、印刷条件としては、たとえば画像の印刷品質(高画質、標準など)、用紙58の種類(A4、B5、L判など)、1枚の用紙58に印刷する画像のレイアウト(1up、2up、4upなど)などがある。
画像および印刷条件を選択したら、印刷指示データ生成部81は、印刷指示データを生成する。
印刷指示データを生成した後、印刷指示データ生成部81は、この生成した印刷指示データをUSBマスストレージクラス83によりプリンタ2へ送信する。
プリンタ2のUSBマスストレージクラス95は、印刷指示データを受信すると、印刷指示データを印刷指示データ解釈部91へ出力する。なお、この印刷指示データの送信は、たとえば特開2003−256154号公報と同様の方法を利用すればよい。
図11は、図10中の印刷指示データ解釈部91の動作を示すフローチャートである。
印刷指示データ解釈部91は、印刷指示データが入力されると、その印刷指示データにて指定される印刷処理の制御を開始する(ステップS1)。具体的には、印刷指示データ解釈部91は、まず、印刷指示データの中からファイル名(あるいはファイルID)を抽出し、そのファイル名等のファイルの画像サイズ情報の取得要求データを生成する。
この画像サイズ情報の取得要求データは、SCSIホスト97からプリンタ2のUSBマスストレージクラス95へ渡され、プリンタ2のUSBマスストレージクラス95により、DSC1のUSBマスストレージクラス83へ転送される。DSC1のUSBマスストレージクラス83は、この画像サイズ情報の取得要求データを画像データ送信部82へ出力する。
画像データ送信部82は、画像サイズ情報の取得要求データを受け取ると、その取得要求データに含まれるファイル名を抽出する。また、画像データ送信部82は、そのファイル名のファイル32のEXIFヘッダから、画像の縦方向のピクセル数および横方向のピクセル数を読み込み、この画像の縦方向のピクセル数および横方向のピクセル数の情報を出力する。
この画像の縦方向のピクセル数および横方向のピクセル数の情報は、DSC1のUSBマスストレージクラス83によりプリンタ2へ送信され、プリンタ2のUSBマスストレージクラス95により印刷指示データ解釈部91に入力される。
画像の縦方向のピクセル数および横方向のピクセル数の情報が入力されると、印刷指示データ解釈部91は、印刷指示データに含まれるレイアウト情報とそれらの縦横の各ピクセル数とに基づいて、画像を回転させる必要があるか否かを判断する(ステップS2)。
画像の縦方向のピクセル数と横方向のピクセル数の情報が入力されると、印刷指示データ解釈部91は、印刷指示データに含まれるレイアウト情報とそれらの縦横の各ピクセル数とに基づいて、画像を回転して印刷するか否かを判断する(ステップS2)。
たとえば、キャリッジ走査方向が用紙58の短辺と平行であって、印刷レイアウトが1upまたは4upである場合、画像の縦方向のピクセル数が横方向のピクセル数より小さいときには、印刷指示データ解釈部91は、画像を回転すると判断し、画像の縦方向のピクセル数が横方向のピクセル数以上であるときには、印刷指示データ解釈部91は、画像を回転しないと判断する。
また、たとえば、キャリッジ走査方向が用紙58の短辺と平行であって、印刷レイアウトが2upまたは8upである場合、画像の縦方向のピクセル数が横方向のピクセル数以下であるときには、印刷指示データ解釈部91は、画像を回転しないと判断し、画像の縦方向のピクセル数が横方向のピクセル数より大きいときには、印刷指示データ解釈部91は、画像を回転すると判断する。
図12は、画像のピクセル数について説明する図である。図12(A)に示すように、画像の横ピクセル数は、エンコード方向に沿った一辺(つまりブロック行)のピクセル数であり、画像の縦ピクセル数は、エンコード方向に対して垂直な一辺(つまりブロック列)のピクセル数である。
また、画像を回転すると判断する場合には、図12(B)に示すように、キャリッジの走査方向(つまり1回に印刷するライン向き)と画像データのエンコード方向に対応する画像201上の方向とが垂直となる場合である。
画像を回転する必要がないと判断した場合、印刷指示データ解釈部91は、ファイル名を指定して、そのファイル名のファイル32に含まれるEXIF画像データをデコードする指示をデコーダ93へ出力する(ステップS3)。つまり、印刷指示データ解釈部91は、画像を回転することなくデコード処理を行う指示をデコーダ93へ出力する。
また、画像を回転する必要があると判断した場合、印刷指示データ解釈部91は、ファイル名(あるいはファイルID)を指定するとともに、そのファイル名等のファイル32に含まれるEXIF画像データの画像を回転しながらデコードする指示をデコーダ93へ出力する(ステップS4)。
図13は、図10中のデコーダ93の動作を示すフローチャートである。図14は、図10中のキャッシュシステム92の動作を示すフローチャートである。
デコーダ93は、まず、印刷指示データ解釈部91からのデコード指示に画像を回転させる指示が含まれているか否かを判断する(ステップS11)。
画像を回転させる指示が含まれていない場合、デコーダ93は、EXIF画像データの読み込みを開始する(ステップS12)。具体的には、デコーダ93は、ファイル名を指定して、そのファイルの先頭から1ワード分のデータを出力する指示をキャッシュシステム92へ出力する。
ファイルの先頭から1ワード分のデータを出力する指示が入力されると、キャッシュシステム92は、その指示に係る1ワード分のデータがキャッシュメモリ71内に格納されているか否かを判断する(ステップS31)。指定されたファイル名のEXIF画像ファイル32をはじめて読み込む場合には、そのファイルのデータはキャッシュメモリ71に読み込まれていない。したがって、キャッシュシステム92は、その指示に係る1ワード分のデータがキャッシュメモリ71内に格納されていないと判断する。
指示に係る1ワード分のデータがキャッシュメモリ71内に格納されていない場合、キャッシュシステム92は、データの送信要求を生成する(ステップS32)。このデータの送信要求には、要求に係るファイル名と、読み込むデータのデータ位置の範囲(たとえば読み込むデータ位置の範囲の先頭バイトのデータ位置と最終バイトのデータ位置とを組み合わせたもの)とが含まれる。最初のデータの送信要求では、読み込むデータの先頭バイトとしてファイルの先頭バイトが指定され、最終バイトとしてキャッシュバッファ72のサイズに相当するバイトが指定される。
このデータの送信要求は、キャッシュシステム92から出力された後、プリンタ2のUSBマスストレージクラス95、プリンタ2のUSB通信I/F46、DSC1のUSB通信I/F19およびDSC1のUSBマスストレージクラス83を介して、画像データ送信部82へ送信される。
画像データ送信部82は、データの送信要求が入力されると、その要求に係るデータを半導体メモリ20から読み込む。この最初のデータの要求に基づいて、画像データ送信部82は、指定されたファイル名のEXIF画像ファイル32の先頭バイトから、キャッシュバッファ72のサイズに相当するバイトまでのデータを読み込む。
画像データ送信部82に読み込まれたデータは、画像データ送信部82から出力された後、DSC1のUSBマスストレージクラス83、DSC1のUSB通信I/F19、プリンタ2のUSB通信I/F46およびプリンタ2のUSBマスストレージクラス95を介して、キャッシュシステム92へ送信される。
キャッシュシステム92は、要求していたデータが入力されると、そのデータを空いているキャッシュバッファ72に書き込む(ステップS33)。また、キャッシュシステム92は、そのキャッシュバッファ72に格納したデータのファイル名および格納しているデータ位置の範囲を示す情報と、キャッシュした時刻の情報とを記憶する。なお、空いているキャッシュバッファ72が無い場合には、キャッシュシステム92は、最も早くデータをキャッシュしたキャッシュバッファ72を選択し、その選択したキャッシュバッファ72に受信したデータを上書きする。
そして、キャッシュシステム92は、そのデータをデコーダ93へ出力する(ステップS34)。
キャッシュシステム92に要求した1ワード分のデータがキャッシュシステム92から入力されると、図13に示すように、デコーダ93は、そのデータの入力によって、ブロック1つ分のすべてのデータの読み込みが完了したか否かを判断する(ステップS13)。そして、デコーダ93は、JPEGの符号化ブロック1つ分のすべてのデータの読み込みが完了するまで、次の1ワード分のデータの出力要求をキャッシュシステム92へ繰り返し出力する。
キャッシュシステム92は、デコーダ93から1ワード分のデータの出力要求が入力される度に、キャッシュバッファ72のデータの範囲を示す情報と要求されたデータの位置とを比較して、その要求に係るデータがキャッシュメモリ71内にあるか否かを判断する(ステップS31)。また、キャッシュシステム92は、キャッシュメモリ71内にデータがある場合には、キャッシュメモリ71から読み出して出力し(ステップS34)、キャッシュメモリ71内にデータがない場合には、DSC1から新たなデータを取得して(ステップS32,S33)、要求に係るデータを出力する(ステップS34)。
デコーダ93は、ブロック1つ分のすべてのデータの読み込みが完了すると、そのブロックのデコード処理を行う(ステップS14)。デコーダ93は、復号化したピクセル毎のピクセルのデータを印刷制御データ生成部94へ出力する。なお、デコード処理は、1ブロック毎ではなく所定の数のブロックに対してまとめて行うようにしてもよい。
デコード処理が完了すると、デコーダ93は、印刷指示データ解釈部91が指定したファイルのEXIF画像データをすべて読み込んだか否かを判断する(ステップS15)。そして、デコーダ93は、指定されたファイルのすべてのEXIF画像データを読み込んだ場合には、デコード処理を終了する。
なお、ファイルのすべてのEXIF画像データを読み込んだ否かは、ファイルの最後に付加されているEOFデータを読み込んだか否かに基づいて判断すればよい。
指定されたファイルのすべてのEXIF画像データの読込みが完了していない場合には、デコーダ93は、次のブロックの先頭ビットから、ワード毎のデータ読み込み処理を再開する(ステップS16)。
なお、ブロック1つ分のすべてのデータの読み込みが完了したと判断する際に、デコーダ93は、その最後に読み込んだデータの最終バイトの次のバイトを次のブロックの先頭バイトと判断する。
以上の処理により、印刷指示データ解釈部91がデコーダ93に指定したファイルのEXIF画像データはすべて、ピクセル毎のピクセルデータへ変換され、印刷制御データ生成部94へ出力される。
印刷制御データ生成部94は、ブロック毎に入力されるピクセルデータを保持する。そして、印刷制御データ生成部94は、少なくとも1印刷行(つまり、少なくとも1回のキャリッジ走査)分のピクセルデータがそろったら、その1印刷行分のピクセルデータに基づいて印刷制御データを生成する。印刷デバイス47は、この印刷制御データを用いて用紙58に少なくとも1行分の印刷処理を行う。
また、印刷制御データ生成部94は、この1印刷行分のピクセルデータに基づく印刷制御データの生成処理を、すべてのピクセルデータについて繰り返す。これにより、排紙トレイ54に排出される用紙58には、印刷指示データ解釈部91がデコーダ93に指定したファイルのEXIF画像データに基づく画像が所定のレイアウトにて形成される。また、その画像は、画像の長手方向が用紙58の給紙方向となる姿勢にて形成される。
ところで、デコーダ93によるワード単位でのデータ読み込みが進んで、キャッシュバッファ72内にデコーダ93により要求されるデータがなくなると、キャッシュシステム92は、1つのキャッシュバッファ72分のデータをDSC1から新たに取得する。また、キャッシュシステム92は、DSC1から新たに取得したデータを、空いているキャッシュバッファ72、あるいは、空いているキャッシュバッファ72が無い場合には最も更新時刻が古いキャッシュバッファ72に格納する。また、キャッシュシステム92は、新たに取得したデータの中から、デコーダ93により要求されたデータを読み出して、デコーダ93へ出力する。
このように、キャッシュメモリ71にキャッシュされるデータは、デコーダ93によるワード単位でのデータ読み込みが進むにつれて更新される。また、先にキャッシュしたデータは、後からキャッシュしたデータによって消去される。
図15は、画像を回転しない場合におけるキャッシュメモリ71の状態変化の一例を示す図である。図15(A)は、キャッシュメモリ71に読み込まれるEXIF画像データのデータ構造を示すものである。図15(B)は、画像を回転させずにデコードする場合において、デコードを開始した直後のキャッシュメモリ71の記憶状態の一例を示す図である。図15(C)は、画像を回転させずにデコードする場合において、デコードを終えた時のキャッシュメモリ71の記憶状態の一例を示す図である。
画像を回転させずにデコードする場合、図15に例示するように、キャッシュメモリ71には、EXIF画像データの先頭から順番に読み込まれる。また、空いているキャッシュバッファ72が無くなったら、古いデータを記憶するキャッシュバッファ72から順番に、新たに読み込んだデータにて上書きされる。
したがって、EXIF画像データを回転させずに印刷する場合には、キャッシュシステム92は、EXIF画像データを、キャッシュバッファ72のサイズ分ずつ先頭から順番にキャッシュする。また、EXIF画像データの各バイトは、1回ずつキャッシュメモリ71に読み込まれる。
図13および図14に戻り、印刷指示データ解釈部91からのデコード指示に画像を回転させる指示が含まれている場合には、デコーダ93は、そのデコードを指示されたEXIF画像データのプレスキャンを開始する(ステップS17)。
プレスキャンにおいて、デコーダ93は、ファイル名を指定して、キャッシュシステム92に対して1ワード単位でデータ読込み指示を出力し、EXIF画像データを先頭から最後まで順番に読み込む。キャッシュシステム92は、デコーダ93から要求されたデータがキャッシュメモリ71にある場合には、そのキャッシュメモリ71からデータを読み出してデコーダ93へ出力し(ステップS34)、デコーダ93から要求されたデータがキャッシュメモリ71にない場合には、そのデータを含むデータをDSC1からキャッシュバッファ72へ読み込み(ステップS32、S33)、その1ワードのデータをデコーダ93へ出力する(ステップS34)。
キャッシュシステム92から1ワード分のデータが入力されると、デコーダ93は、そのデータが、ブロック行の先頭バイトであるか否かを判断する。ブロック行の先頭バイトとは、画像においてブロック行の左端に位置するブロックの先頭バイトである。
そして、キャッシュシステム92から入力されたデータがブロック行の先頭バイトである場合には、デコーダ93は、その先頭バイトの、EXIF画像データにおけるデータ位置、すなわちEXIF画像データの先頭ビットから何バイト目のデータであるのかを記憶する。
デコーダ93は、EXIF画像データの終わりまでワード単位でのデータ取得を繰り返す。そして、EXIF画像データの終わりまでワード単位でのデータ取得を繰り返した後には、デコーダ93は、EXIF画像データに含まれる画像のすべてのブロック行の先頭バイトのデータ位置を記憶している。なお、各ブロック行の先頭バイトのデータ位置は、それぞれのポインタバッファに記憶される。
以上のプレスキャン処理を完了したら、デコーダ93は、EXIF画像データのデコードのための読み込みを開始する(ステップS18)。デコーダ93は、まず、画像の一番上のブロック行(つまり、画像データの先頭に最も近い1行分のブロック)の先頭バイトからワード単位でのデータ読み込みを開始する。キャッシュシステム92は、デコーダ93に要求されたデータを、必要に応じてキャッシュしながらデコーダ93へ出力する。なお、本実施の形態では、画像の上とは、画像データのはじめの部分による画像部分をいい、画像の左とは、画像データの最初のブロックによる画像が配置される側をいう。
また、デコーダ93は、ブロック1つ分のすべてのデータの読み込みが完了したか否かを判断し(ステップS19)、それが完了するまでワード単位のデータの読み込みを繰り返す。
そして、ブロック1つ分のすべてのデータの読み込みが完了すると、デコーダ93は、そのデータの次のバイトのデータ位置を記憶する。デコーダ93は、このブロック行について、この新たなデータ位置を、このブロック行のポインタバッファに上書きする(ステップS20)。
ポインタバッファに格納するデータ位置を更新したら、デコーダ93は、読み込んだブロックのデコード処理を行う(ステップS21)。また、デコーダ93は、デコード処理により生成したピクセル毎のピクセルのデータを印刷制御データ生成部94へ出力する。なお、デコーダ93は、複数ブロックをまとめて復号化するようにしてもよい。
デコード処理が完了すると、デコーダ93は、印刷指示データ解釈部91が指定したファイル32のEXIF画像データをすべてデコードしたか否かを判断する(ステップS22)。そして、デコーダ93は、指定されたファイルのすべてのEXIF画像データをデコードした場合には、デコード処理を終了する。
指定されたファイルのすべてのEXIF画像データの読込みが完了していない場合には、デコーダ93は、さらに画像のブロック列1列(つまり、少なくとも1回のキャリッジ走査による印刷に必要なブロック1列)分のデータ読込みが完了しているか否かを判断する(ステップS23)。
画像の左上のブロックのデコード処理が完了した時点では、EXIF画像データをデコードのためにすべて読み込んでおらず、また、画像のブロック列1列分のデータ読込みも完了していない。そのため、デコーダ93は、次のブロック行のデコード処理を開始する(ステップS24)。
具体的には、デコーダ93は、画像の上から二行目のブロック行に対応するポインタバッファからデータ位置を読み込み、このデータ位置からワード単位でのデータ読み込みを開始する。そして、デコーダ93は、ブロック1つ分のデータを読み込んだら(ステップS19)、その画像の上から二行目のブロック行のポインタバッファの値を、そのブロックの最後のデータの次のデータのデータ位置に更新し(ステップS20)、そのブロックのデコード処理を行う(ステップS21)。
また、デコーダ93は、このブロック行毎のデコード処理(ステップS19〜S24)を繰り返す。そして、画像の左端のブロック列のすべてのブロックについてデコード処理が完了すると、デコーダ93は、画像の一番上のブロック行についてのデコード処理を行う(ステップS25)。このとき、画像の一番上のブロック行に対応するポインタバッファには、画像の左端のブロックの最終バイトの次のバイトのデータ位置が格納されている。したがって、デコーダ93は、画像の一番上のブロック行の左から二番目のブロックのデコード処理を行うことになる。
以上のように、デコーダ93は、画像のブロック行毎にブロックの先頭ビットを格納するポインタバッファを設け、各ブロックのデータを読み込んだらこのポインタバッファに格納されるデータ位置を順次更新し、複数のブロック行について順番にデコード処理を繰り返す。これにより、デコーダ93は、画像の左側(つまり最初に印刷される画像に対応するブロック列)のブロック列から右側のブロック列までについて順番にデコード処理を行うことになる。
また、印刷制御データ生成部94は、ブロック毎に入力されるピクセルデータを保持する。そして、印刷制御データ生成部94は、少なくとも1印刷行(つまり、少なくとも1回のキャリッジ走査)分のピクセルデータがそろったら、その1印刷行分のピクセルデータに基づいて印刷制御データを生成する。印刷デバイス47は、この印刷制御データを用いて用紙58に少なくとも1行分の印刷処理を行う。
また、印刷制御データ生成部94は、この少なくとも1印刷行分のピクセルデータに基づく印刷制御データの生成処理を、すべてのピクセルデータについて繰り返し行う。これにより、排紙トレイ54に排出される用紙58には、印刷指示データ解釈部91がデコーダ93に指定したファイルのEXIF画像データに基づく画像が所定のレイアウトにて形成される。また、その画像は、画像の長手方向が用紙58の給紙方向となる姿勢にて、つまり90度あるいは270度に回転して形成される。
ところで、このように画像を回転して印刷する場合であっても、デコーダ93によるワード単位でのデータ読み込みが進んで、キャッシュバッファ72内にデコーダ93により要求されるデータがなくなると、キャッシュシステム92は、キャッシュバッファ72のサイズ分のデータをDSC1から新たに取得する。また、キャッシュシステム92は、DSC1から新たに取得したデータを、空いているキャッシュバッファ72、あるいは、空いているキャッシュバッファ72が無い場合には最も更新時刻が古いキャッシュバッファ72に格納する。
図16は、画像を回転する場合におけるキャッシュメモリ71の状態変化の一例を示す図である。図16(A)は、キャッシュメモリ71に読み込まれるEXIF画像データのデータ構造を示すものである。図16(B)は、画像を回転させてデコードする場合において、ブロックを一列分のデコード処理が完了した時点でのキャッシュメモリ71の記憶状態の一例を示す図である。図16(C)は、画像を回転させてデコードする場合において、ブロックを2列分のデコード処理が完了した時点でのキャッシュメモリ71の記憶状態の一例を示す図である。
なお、キャッシュシステム92は、画像のブロック行の行数m以上の本数Pのキャッシュバッファ72を有する。また、通常、キャッシュバッファ72のサイズは、1つのブロックのデータ量より大きい。ちなみに、JPEG形式の画像データにおいて一列分のブロックのデータ量は、数十バイト、大きくても数キロバイトであるのが一般的である。
そのため、画像を回転してデコードする場合において、画像の左端の一列(まり、最初に印刷される画像に対応するブロック列)分のブロックのデコードが完了した時点では、図16(B)に例示するように、キャッシュメモリ71の複数のキャッシュバッファ72には、画像の左端のブロック列のすべてのブロックのデータがキャッシュされることになる。また、画像の左端の一列分のブロックのデータとともにキャッシュされた画像の左から二列目のブロックのデータも、消されることなく、すべてキャッシュメモリ71内に残っている。したがって、この場合では、キャッシュシステム92がDSC1からデータをキャッシュしないでも、デコーダ93は、左から二列目以降のブロックをデコードすることができる。
また、キャッシュシステム92は、キャッシュメモリ71内にデコーダ93から要求されたデータがキャッシュメモリ71内に無い場合には、そのデータを先頭とするキャッシュバッファ72のサイズに相当するデータ量のデータを、DSC1からキャッシュバッファ72へ読み込む。つまり、図16(C)に例示するように、キャッシュシステム92は、画像の一番上の左から二番目のブロックがデコードされる際には、そのブロックのデータの中のキャッシュしていない分のデータだけを新たにキャッシュする。なお、このキャッシュの際に、左から三番目以降のブロックのデータも一緒にキャッシュされる。
ブロック列における各ブロックのデータ量が均一である理想的な場合には、ブロック行の本数と同数にキャッシュバッファ72に格納されているデータが、同時期に順番にキャッシュアウトし、各ブロック行の後続のデータがキャッシュインすることになる。この理想状態の場合では、各データは、一度だけキャッシュインし、そのデータのデコーダ93への読み込みが完了すると、キャッシュアウトしていく。
実際の場合、ブロック列における各ブロックのデータ量が均一となることは稀であると予想されるが、その場合でも、ブロック行数以上のキャッシュバッファ72が用意されていることにより、2つのブロック行を跨いだデータがキャッシュバッファ72に格納されず、また、印刷上の同一走査ラインに対応する、複数のブロック行に属する複数のブロックが、複数のキャッシュバッファ72に並行して架空のされた状態となる可能性が高くなる。これにより、データのキャッシュアウトおよび再度のキャッシュインの頻度が少なくて済み、キャッシュシステム92でのキャッシュヒット率が高まる。
さらに、キャッシュシステム92は、DSC1に対するデータリードの最小単位で、読み込みデータを指定する。このため、過去にキャッシュインしデコードに既に使用されたデータが再度キャッシュインする割合が低減する。なお、この実施の形態1では説明の都合上、データリードの最小単位を1バイト単位としているが、SCSIコマンドを使用する場合には、通常、データリードの最小単位は、512バイトか1024バイトとなる。また、データリードの最小単位は、使用するファイルシステムやファイル管理プロトコルによって異なるため、実装される方式の最小単位のデータ量を採用すればよい。
次に、本実施の形態1によるキャッシュシステム92の有効性を示すために、他のキャッシュ方式との比較について説明する。
図17は、他のキャッシュ方式でのキャッシュメモリの状態変化を示す図である。この方式では、画像を回転する場合においてキャッシュバッファの本数Pを画像のブロックの行数mより少なくしたものである。また、この方式では、キャッシュシステムがキャッシュバッファのサイズごとにEXIF画像データを分割し、その分割単位毎にデータをキャッシュする。
図17(A)は、画像を回転してデコードする場合において、デコードを開始した直後にキャッシュバッファが一杯になった時点でのキャッシュメモリの記憶状態の一例を示す図である。図17(B)は、画像を回転してデコードする場合において、ブロックを1列分デコードした時点でのキャッシュメモリの記憶状態の一例を示す図である。
キャッシュバッファの本数Pが画像のブロックの行数mより少ない場合、キャッシュメモリの容量が画像データより小さいと、図17(A)に示すように、キャッシュメモリには、ブロック一列分のデータをキャッシュすることができない。したがって、一列分のブロックのデコード処理が完了した時点では、図17(B)に示すように、画像の一番上のブロック行のデータは、キャッシュメモリに残っていない。そのため、キャッシュシステムは、デコーダが各ブロックをデコードする度に、DSC1からデータをキャッシュしなければならない。また、キャッシュバッファのサイズを読み込み単位としているため、キャッシュインしても使用されないデータが多くなる。
この従来の方式、つまり図17の方式のようにキャッシュバッファの本数Pが画像のブロックの行数mより少なく、EXIF画像データをキャッシュバッファのサイズごとに分割した単位でデータをキャッシュする場合に比べて、この実施の形態1に係るダイレクト印刷システムは、DSC1での印刷画像の選択操作からプリンタ2での印刷完了までの時間を格段に短縮することができる。
たとえば、縦3450ピクセル、横4600ピクセルの画像を8×8ピクセル毎にブロックのデータへ変換する場合、ブロック行の行数は、432(≒3450/8=431.25)行となる。この画像4つを1枚の用紙58に印刷する場合には、用紙58の給紙方向に垂直な方向に2つの画像を並べることになる。このとき、1印刷行を生成するためには、864(=432×2)個のブロックをデコードする必要がある。
このような4つの画像を3Mバイトのキャッシュメモリでキャッシュして回転して印刷する場合において、従来の方式で1本15kバイトのキャッシュバッファを200本だけ用いる場合に比べて、本実施の形態のキャッシュメモリの構造では、DSC1での印刷画像の選択操作からプリンタ2での印刷完了までの時間が約5分の1に減らすことができた。
なお、3Mバイトのキャッシュメモリ71において本実施の形態のキャッシュメモリの構造を実現する場合、キャッシュバッファ72のサイズは、3472(≒3M/864)バイトになる。
また、そのような3Mバイトのキャッシュメモリ71において864本のキャッシュバッファ72を構成した場合、4Mバイトの画像データによる1つの画像を1枚の用紙58に回転して印刷するときには、200本のキャッシュバッファを構成した場合に比べて、DSC1での印刷画像の選択操作からプリンタ2での印刷完了までの時間を約3分の1に減らすことができた。
以上のように、この実施の形態1に係るダイレクト印刷システムでは、上記構成により、キャッシュメモリ71の効率が向上し、容量が小さいキャッシュメモリ71であっても大きな画像データに基づく画像を迅速に印刷することができる。上述した理想的な状態の場合には、画像を回転して印刷する場合であっても、デコード処理の際には、およそEXIF画像データのデータ量をキャッシュバッファ72のサイズで割った回数(余りがある場合には商に1を加えた回数)だけ、DSC1からプリンタ2へデータをキャッシュするだけで、そのEXIF画像データに基づく画像を印刷することができる。
また、この実施の形態1では、キャッシュシステム92は、読み込むデータの先頭に、デコーダ93に要求されたデータが含まれるように半導体メモリ20からデータを読み込んでいる。そのため、キャッシュバッファ72には、それ以降の印刷で使用するデータがより多く先読みされる。その結果、たとえば、画像データを画像データバッファ71のサイズごとに分割し、その分割した単位毎に画像データを読み込む場合に比べて、画像データの読み込み回数を減らすことができる。
なお、この実施の形態1では、キャッシュシステム92は、画像データにおける画像のブロック行の行数(m)と同数あるいはそのブロック行の行数(m)より多い数の複数のキャッシュバッファ72を生成している。このほかにもたとえば、複数の画像データの画像をキャリッジ55の駆動方向に並べて印刷する場合には、キャッシュシステム92は、それら複数の画像データのブロック行の行数の総数と同数あるいはそのブロック行の行数の総数より多い数の複数のキャッシュバッファ72を生成するようにすれば、同様の効果を期待することができる。
実施の形態2.
本発明の実施の形態2に係るダイレクト印刷システムは、画像データのサイズに応じて、キャッシュメモリ71の構成を変更するようにしたものである。なお、DSC1の構成および動作は、実施の形態1のものと同じであり、同一の符号を付して説明を省略する。また、プリンタ2のハードウェア構成は、実施の形態1のものと同じであり、同一の符号を付して説明を省略する。
図18は、本発明の実施の形態2のプリンタ2における記憶部43の記憶内容を示す図である。また、図19は、本発明の実施の形態2のダイレクト印刷システムに実現される機能を示すブロック図である。プリンタ2の記憶部43には、印刷指示データ解釈プログラム101と、キャッシュシステムプログラム102と、デコーダプログラム63と、印刷制御データ生成プログラム64と、通信制御プログラム群とが記憶される。プリンタ2の通信制御プログラム群は、USBマスストレージクラスプログラム65とを有する。
デコーダプログラム63、印刷制御データ生成プログラム64およびUSBマスストレージクラスプログラム65は、実施の形態1のものと同じであり、同一の符号を付して説明を省略する。
印刷指示データ解釈プログラム101は、中央処理装置41に実行されることで印刷指示データ解釈部111を実現する。キャッシュシステムプログラム102は、中央処理装置41に実行されることで、形成手段、読込手段および出力手段としてのキャッシュシステム112を実現する。これら印刷指示データ解釈部111およびキャッシュシステム112は、実施の形態1のものと基本的に同じものであるが、後述するように、画像を回転して印刷する際の動作の一部が変更されている。
次に、以上のような構成を有するダイレクト印刷システムの動作を説明する。
DSC1では、印刷指示データ生成部81と、画像データ送信部82と、USBマスストレージクラス83とが実現される。また、プリンタ2では、印刷指示データ解釈部111と、キャッシュシステム112と、デコーダ93と、印刷制御データ生成部94と、USBマスストレージクラス95とが実現される。形成手段としてのキャッシュシステム112は、メモリ42に、所定のサイズを有するバッファメモリとしてのキャッシュメモリ113を生成する。この生成時のキャッシュメモリ113内のキャッシュバッファのサイズおよび本数は、実施の形態1のキャッシュメモリ71のものと同じである。
そして、プリンタ2のUSB通信I/F46とDSC1のUSB通信I/F19とによるコンフィグレーション処理が完了し、DSC1の印刷指示データ生成部81から印刷指示データ解釈部111へ印刷指示データが送信される。
図20は、図19中の印刷指示データ解釈部111の動作を示すフローチャートである。
印刷指示データ解釈部111は、印刷指示データが入力されると、その印刷指示データにて指定される印刷処理の制御を開始する(ステップS41)。具体的には、印刷指示データ解釈部111は、まず、印刷指示データの中からファイル名等を抽出し、そのファイル名のファイルのデータ量(ファイルサイズ)と、そのファイルに含まれる画像のサイズ情報との取得を要求するデータを生成する。
このファイルのデータ量および画像サイズ情報の取得要求データは、画像データ送信部82へ送信される。画像データ送信部82は、画像サイズ情報の取得要求データを受け取ると、その取得要求データに含まれるファイル名を抽出する。また、画像データ送信部82は、そのファイル名のファイル32から、そのデータ量および画像サイズ情報を読み込み、これらを印刷指示データ解釈部111へ送信する。
印刷指示データ解釈部111は、画像ファイル32のデータ量(ファイルサイズ)、画像の縦ピクセル数と横ピクセル数を受信すると、画像の回転が必要か否かを判断する(ステップS42)。
印刷指示データ解釈部111は、画像の回転が必要ではない場合には、キャッシュメモリ113の第一の再構成指示をキャッシュシステム112へ出力する。キャッシュシステム112は、この再構成指示を受け取ると、キャッシュバッファの本数を少なくし(たとえば200本)、一本のキャッシュバッファの容量を実施の形態1のキャッシュバッファの容量より大きくする(たとえば、15kバイト)(ステップS43)。
その後、実施の形態1と同様にしてデコーダ93により画像データのデコードが行われる(ステップS3)。この場合、キャッシュバッファのサイズが大きいので、キャッシュバッファ内のデータの入れ替えを行う回数が減る。
一方、印刷指示データ解釈部111は、画像の回転が必要である場合には、画像ファイル32のデータ量がキャッシュメモリ113のサイズ以下であるか否かを判断する(ステップS44)。
印刷指示データ解釈部111は、画像ファイル32のデータ量がキャッシュメモリ113のサイズ以下である場合、キャッシュメモリ113の第一の再構成指示をキャッシュシステム112に行わせる(ステップS45)。その後、デコーダ93により画像を回転させる順番で画像データのデコードが行われる(ステップS4)。この場合、画像の回転が行われるが、画像ファイル32のすべてのデータがキャッシュされているため、キャッシュデータのヒット率は高くなり、この点についての問題は特に生じない。
また、印差指示データ解釈部111は、画像ファイル32のデータ量がキャッシュメモリ113のサイズより大きい場合、キャッシュメモリ113の第二の再構成指示をキャッシュシステム112へ出力する。キャッシュシステム112は、この再構成指示を受け取ると、キャッシュバッファのサイズと本数を、実施の形態1の場合と同様に設定する(ステップS46)。つまり、ステップS43の場合と比べ、キャッシュバッファの本数は多くなり、一本のキャッシュバッファサイズは小さくなる。
その後、実施の形態1と同様にしてデコーダ93により、画像を回転させる順番で、画像データのデコードが行われる(ステップS4)。このように、実施の形態2では、キャッシュメモリ113のサイズが画像ファイル32のデータ量より小さく、かつ画像の回転が必要である場合にのみ、実施の形態1のキャッシュ方式で、キャッシュシステム112およびキャッシュメモリ113が動作する。
なお、印刷制御データ生成部94の動作および印刷デバイス47による用紙58への印刷処理については、実施の形態1の場合と同様であるので、その説明を省略する。
以上のように、この実施の形態2では、キャッシュメモリ113のサイズが画像ファイル32のデータ量より小さく、かつ画層の回転が必要である場合にのみ、実施の形態1のキャッシュ方式で、キャッシュシステム112およびキャッシュメモリ113が動作し、それ以上の場合では、キャッシュバッファの本数が少なくかつキャッシュバッファの容量が大きくされる。これにより、キャッシュメモリ113のサイズが画像ファイル32のデータ量より小さく、かつ画像の回転が必要である場合には、実施の形態1と同様にしてキャッシュデータヒット率を高くし印刷時間を低減でき、また、そうでない場合には、キャッシュメモリ113のデータの出し入れの回数を少なくして印刷時間を低減することができる。
なお、この実施の形態2では、キャッシュシステム112は、画像データにおける画像のブロック行の行数(m)と同数あるいはそのブロック行の行数(m)より多い数の複数のキャッシュバッファを生成している。このほかにもたとえば、複数の画像データの画像をキャリッジ55の駆動方向に並べて印刷する場合には、キャッシュシステム112は、それら複数の画像データのブロック行の行数の総数と同数あるいはそのブロック行の行数の総数より多い数の複数のキャッシュバッファを生成するようにすれば、同様の効果を期待することができる。
実施の形態3.
本発明の実施の形態3に係るダイレクト印刷システムは、画像ファイル32のデータ量に応じてキャッシュメモリ133の構成を変更するようにしたものである。なお、DSC1の構成および動作は、実施の形態1のものと同じであり、同一の符号を付して説明を省略する。また、プリンタ2のハードウェア構成は、実施の形態1のものと同じであり、同一の符号を付して説明を省略する。
図21は、本発明の実施の形態3のプリンタ2における記憶部43の記憶内容を示す図である。また、図22は、本発明の実施の形態3のダイレクト印刷システムに実現される機能を示すブロック図である。プリンタ2の記憶部43には、印刷指示データ解釈プログラム121と、キャッシュシステムプログラム122と、デコーダプログラム63と、印刷制御データ生成プログラム64と、通信制御プログラム群とが記憶される。プリンタ2の通信制御プログラム群は、USBマスストレージクラスプログラム65を有する。
デコーダプログラム63、印刷制御データ生成プログラム64およびUSBマスストレージクラスプログラム65は、実施の形態1のものと同じであり、同一の符号を付して説明を省略する。
印刷指示データ解釈プログラム121は、中央処理装置41に実行されることで印刷指示データ解釈部131を実現する。キャッシュシステムプログラム122は、中央処理装置41に実行されることで、形成手段、読込手段および出力手段としてのキャッシュシステム132を実現する。これら印刷指示データ解釈部131およびキャッシュシステム132は、実施の形態1のものと基本的に同じものであるが、後述するように、画像を回転して印刷する際の動作の一部が変更されている。
次に、以上のような構成を有するダイレクト印刷システムの動作を説明する。
DSC1では、印刷指示データ生成部81と、画像データ送信部82と、USBマスストレージクラス83とが実現される。また、プリンタ2では、印刷指示データ解釈部131と、キャッシュシステム132と、デコーダ93と、印刷制御データ生成部94と、USBマスストレージクラス95とが実現される。形成手段としてのキャッシュシステム132は、メモリ42に、所定のサイズを有するバッファメモリとしてのキャッシュメモリ133を生成する。
そして、プリンタ2のUSB通信I/F46とDSC1のUSB通信I/F19とによるコンフィグレーション処理が完了し、DSC1の印刷指示データ生成部81から印刷指示データ解釈部131へ印刷指示データが送信される。
図23は、図22中の印刷指示データ解釈部131の動作を示すフローチャートである。
印刷指示データ解釈部131は、印刷指示データが入力されると、その印刷指示データにて指定される印刷処理の制御を開始する(ステップS1)。具体的には、印刷指示データ解釈部131は、まず、画像サイズ情報の取得要求データを、画像データ送信部82へ送信する。画像データ送信部82は、画像サイズ情報の取得要求データを受け取ると、その取得要求データに含まれるファイル名等を抽出する。また、画像データ送信部82は、そのファイル名のファイル32から、その画像サイズ情報を読み込み、これを印刷指示データ解釈部131へ送信する。
印刷指示データ解釈部131は、これらの情報を受信したら、画像の縦方向のピクセル数および横方向のピクセル数の情報並びに用紙58への画像の印刷レイアウトに基づいて、画像を回転させる必要があるか否かを判断する(ステップS2)。
そして、画像を回転する必要がないと判断した場合、実施の形態1と同様にデコードおよび印刷処理が行われる(ステップS3)。
一方、画像を回転する必要があると判断した場合、印刷指示データ解釈部131は、画像の縦方向のピクセル数の情報と、印刷レイアウトとに基づいて、キャッシュメモリ133内のキャッシュバッファの本数および一本のキャッシュバッファの容量を演算する(ステップS51)。
具体的にはたとえば、用紙の給紙方向と垂直な方向に画像を並べることなく印刷する場合(たとえば1upの場合)には、印刷指示データ解釈部131は、画像の縦のピクセル数を1ブロックの縦のピクセル数(ここでは8)で割る。そして、印刷指示データ解釈部131は、その演算結果の商の値(余りがある場合には、商に1を加算した値)を、キャッシュメモリ133内のキャッシュバッファの本数として演算する。なお、一本のキャッシュバッファの容量は、たとえば、キャッシュメモリ133の容量をキャッシュバッファの本数で割り、読み込みの最小単位未満の端数を切り捨てることで得られる。
ほかにもたとえば、用紙の給紙方向と垂直な方向に2つの画像を並べて印刷する場合(たとえば4upの場合)には、印刷指示データ解釈部131は、画像の縦のピクセル数を1ブロックの縦のピクセル数(ここでは8)で割る。そして、印刷指示データ解釈部131は、その演算結果の商の値(余がある場合には、商に1を加算した値)の二倍を、キャッシュメモリ133内のキャッシュバッファの本数として演算する。
なお、用紙の給紙方向と垂直な方向にp(pは自然数)個の画像を並べる場合には、1画像あたりの演算結果のp倍を、キャッシュメモリ133内のキャッシュバッファの本数として演算すればよい。また、複数の画像を並べる場合に、各画像のピクセル数が異なるときには、各画像の縦ピクセル数の和からキャッシュバッファの本数を計算するようにしてもよい。
また、印刷指示データ解釈部131は、演算したキャッシュバッファの本数および容量の情報をキャッシュシステム132へ出力する。
印刷指示データ解釈部131からキャッシュバッファの本数の情報が入力されると、形成手段としてのキャッシュシステム132は、キャッシュメモリ133内のキャッシュバッファの本数がその指示された本数および容量となるように、キャッシュメモリ133を再構成する。
その後、実施の形態1のステップS45と同様にして、EXIF画像データの画像は回転しながらデコードされ、その画像が印刷される(ステップS4)。
以上のように、この実施の形態3では、印刷に係る画像データにおける画像のブロック行の数と同数のキャッシュバッファを形成し用いるので、キャッシュメモリ133の使用効率をより高くすることができ、画像データに応じた最適な印刷時間の短縮効果を期待することができる。
なお、この実施の形態3では、キャッシュシステム132は、画像データにおける画像のブロック行の行数(m)と同数あるいはそのブロック行の行数(m)より多い数の複数のキャッシュバッファを生成している。このほかにもたとえば、複数の画像データの画像をキャリッジ55の駆動方向に並べて印刷する場合には、キャッシュシステム132は、それら複数の画像データのブロック行の行数の総数と同数あるいはそのブロック行の行数の総数より多い数の複数のキャッシュバッファを生成するようにすれば、同様の効果を期待することができる。
以上の各実施の形態は、本発明の好適な実施の形態であるが、本発明はこれに限定されるものではなく、種々の変形、変更が可能である。
上記実施の形態では、画像を回転させる場合には、デコーダ93はプレスキャンをしてから、デコードのためのデータの読み込みを開始している。この他にもたとえば、デコード処理の前段階において画像の画質を変更するためのAPF(Auto Picture Fine)処理などの画像最適化処理をする場合には、その処理に使用するパラメータを生成するために画像データをスキャンする際に各ブロック行の先頭バイトのデータ位置をポインタバッファに格納し、デコーダ93によるプレスキャン処理を省略するようにしてもよい。
また、ほかにもたとえば、デコーダ93は、画像を回転する場合であっても画像を回転しない場合と同様にプレスキャンをすることなく、EXIF画像データの先頭から順番にデータを読み込んでその画像の左端のブロック列のデコード処理を開始し、その画像の左端のブロック列のデコード処理の際に各ブロック行の左から二番目のブロックの先頭バイトのデータ位置をポインタバッファに格納し、各ブロック行の左から二番目以降のブロック列のデコード処理においてはそのポインタバッファを用いてブロック行毎の読み込み処理を行うようにしてもよい。
上記各実施の形態では、EXIF画像データをキャッシュして印刷処理をしている。この他にもたとえば、ダイレクト印刷システムは、JPEG画像データ、ビットマップ形式の画像データなどを印刷してもよい。たとえば横長の画像のビットマップ形式の画像データの場合には、その画像における画像の行数はピクセル行となるので、その縦方向のピクセル数と同数あるいはそれ以上の数のキャッシュバッファを用いれば、実施の形態1と同様の効果を得ることができる。つまり、ビットマップ形式の画像データなどでは、1回のデータのキャッシュによって、キャリッジの複数回の走査で使用するデータを読み込むことができ、それによる印刷時間の短縮効果を得ることができる。
上記各実施の形態では、DSC1のカードリーダ16に挿入された半導体メモリ20のEXIF画像データの画像を回転して印刷している。この他にもたとえば、本発明は、プリンタにカードリーダを設け、このカードリーダに挿入された半導体メモリ20のEXIF画像データの画像を回転して印刷する場合にも適用することができる。
また、上記各実施の形態では、DSC1とプリンタ2がUSBにより接続されているが、その代わりに、別のインタフェースを採用してもよい。その場合、有線のインタフェースや有線の通信方式の他、ブルートゥース(商標)、赤外線通信などの無線のインタフェースや無線LANなどの有線の通信方式を使用してもよい。また、DSC1とプリンタ2との間のダイレクト印刷の制御コマンドやその応答などをUSBマスストレージクラスを利用して行っているが、その代わりに、PictBridge(商標)などを利用するようにしてもよい。
また、上記各実施の形態では、DSC1に画像ファイル32が格納されているが、その代わりに、携帯電話機、音楽プレーヤ、撮影機能のないストレージ装置などといった他の電子機器を使用してもよい。その場合、その電子機器には、プリンタ2と通信可能な通信手段が設けられる。
また、上記各実施の形態では、キャッシュシステム92,112,132、デコーダ93、印刷制御データ生成部94は、ソフトウェアにより実現されているが、これらのうちの一部または全部を専用のハードウェアにより実現するようにしてもよい。
なお、上記各実施の形態では、EXIF画像データ32のデータ量としてファィルサイズを使用しているが、その代わりに、EXIF画像データ32のEXIFヘッダを除いたデータ量としてもよい。
本発明は、たとえばデジタルカメラとプリンタとを直接に接続し、そのデジタルカメラに記憶されている画像データファイルに基づく画像をプリンタで印刷するダイレクト印刷システムに利用することができる。
本発明の実施の形態1に係るダイレクト印刷システムを示す図である。 図1中のDSCのハードウェア構成を示すブロック図である。 図2中のフラッシュメモリの記憶内容を示す図である。 図2のDSCにおいて撮像時に実現される機能を示すブロック図である。 図4中のEXIF画像データ生成部による圧縮処理の説明図である。 図1中のプリンタのハードウェア構成を示すブロック図である。 図1中のプリンタの内部機構を示す透過斜視図である。 図6中の記憶部の記憶内容を示す図である。 図1のダイレクト印刷システムに実現される機能を示すブロック図である。 図6中のメモリに実現されるキャッシュメモリの構成を示す図である。 図10中の印刷指示データ解釈部の動作を示すフローチャートである。 画像のピクセル数について説明する図である。 図10中のデコーダの動作を示すフローチャートである。 図10中のキャッシュシステムの動作を示すフローチャートである。 画像を回転しない場合でのキャッシュメモリの状態変化の一例を示す図。 画像を回転する場合におけるキャッシュメモリの状態変化の一例を示す図。 他のキャッシュ方式でのキャッシュメモリの状態変化の比較例を示す図。 本発明の実施の形態2に係るダイレクト印刷システムのプリンタの記憶部の記憶内容を示す図。 本発明の実施の形態2に係るダイレクト印刷システムに実現される機能を示すブロック図。 図19中の印刷指示データ解釈部の動作を示すフローチャートである。 本発明の実施の形態3に係るダイレクト印刷システムのプリンタの記憶部の記憶内容を示す図。 本発明の実施の形態3に係るダイレクト印刷システムに実現される機能を示すブロック図。 図22中の印刷指示データ解釈部の動作を示すフローチャートである。
符号の説明
1 DSC(画像供給装置)、2 プリンタ、19 USB通信I/F(第一の通信手段)、20 半導体メモリ、46 USB通信I/F(第二の通信手段)、55 キャリッジ、72 キャッシュバッファ(画像データバッファ)、82 画像データ送信部(送信手段)、93 デコーダ(要求手段)、92 キャッシュシステム(読込手段、出力手段)、113,133 キャッシュメモリ(バッファメモリ)、112,132 キャッシュシステム(形成手段、読込手段、出力手段)

Claims (5)

  1. 所定画素数分の高さを有する行ごとにデータが配列されている画像データを読み込んでその画像を印刷するプリンタにおいて、
    所定のサイズを有するバッファメモリと、
    印刷時のキャリッジ駆動方向に対応する画像方向と画像データにおける行の方向が90度または270度ずれている場合であって、上記画像データのデータ量が上記バッファメモリのサイズより大きい場合には、上記バッファメモリに、上記画像データにおける画像の行数と少なくとも同数である第一の数でかつ生成時より容量を小さくした画像データバッファを形成し、上記画像データのデータ量が上記バッファメモリのサイズ以下の場合には、上記バッファメモリに、上記第一の数より少ない第二の数でかつ生成時より容量を大きくした画像データバッファを形成する形成手段と、
    画像の印刷順にしたがって、印刷領域に対応するデータを要求する要求手段と、
    上記要求に係るデータが上記複数の画像データバッファにない場合には、その要求に係るデータを含む上記画像データバッファのサイズ分のデータを読み込んで、画像データを早く格納した画像データバッファから順に上記複数の画像データバッファに格納する読込手段と、
    上記画像データバッファから上記要求に係るデータを上記要求手段へ出力する出力手段と、
    を有することを特徴とするプリンタ。
  2. 所定画素数分の高さを有する行ごとにデータが配列されている画像データを読み込んでその画像を印刷するプリンタにおいて、
    所定のサイズを有するバッファメモリと、
    上記画像データの行数を取得する取得手段と、
    印刷時のキャリッジ駆動方向に対応する画像方向と画像データにおける行の方向が90度または270度ずれている場合に、上記バッファメモリに、上記取得手段により取得された上記画像データの行数に基づき、その行数と少なくとも同数の複数の画像データバッファを形成する形成手段と、
    画像の印刷順にしたがって、印刷領域に対応するデータを要求する要求手段と、
    上記要求に係るデータが上記複数の画像データバッファにない場合には、その要求に係るデータを含む上記画像データバッファのサイズ分のデータを読み込んで、画像データを早く格納した画像データバッファから順に上記複数の画像データバッファに格納する読込手段と、
    上記画像データバッファから上記要求に係るデータを上記要求手段へ出力する出力手段と、
    を有することを特徴とするプリンタ。
  3. 所定画素数分の高さを有する行ごとにデータが配列されている複数の画像データを読み込んでそれらの画像を回転してキャリッジの駆動方向に並べて印刷するプリンタにおいて、
    所定のサイズを有するバッファメモリと、
    印刷にともない画像データを回転する必要がある場合であって、上記複数の画像データの総データ量が上記バッファメモリのサイズより大きい場合には、上記バッファメモリに、上記複数の画像データにおける画像の行数の総数と少なくとも同数である第一の数でかつ生成時より容量を小さくした画像データバッファを形成し、上記複数の画像データのデータ量が上記バッファメモリのサイズ以下の場合には、上記バッファメモリに、上記第一の数より少ない第二の数でかつ生成時より容量を大きくした画像データバッファを形成する形成手段と、
    画像の印刷順にしたがって、印刷領域に対応するデータを要求する要求手段と、
    上記要求に係るデータが上記複数の画像データバッファにない場合には、その要求に係るデータを含む上記画像データバッファのサイズ分のデータを読み込んで、画像データを早く格納した画像データバッファから順に上記複数の画像データバッファに格納する読込手段と、
    上記画像データバッファから上記要求に係るデータを上記要求手段へ出力する出力手段と、
    を有することを特徴とするプリンタ。
  4. 所定画素数分の高さを有する行ごとにデータが配列されている複数の画像データを読み込んでそれらの画像を回転してキャリッジの駆動方向に並べて印刷するプリンタにおいて、
    所定のサイズを有するバッファメモリと、
    上記画像データの行数を取得する取得手段と、
    印刷にともない画像データを回転する必要がある場合には、上記バッファメモリに、上記取得手段により取得された上記画像データの行数に基づき、その行数の総数と少なくとも同数の画像データバッファを形成する形成手段と、
    画像の印刷順にしたがって、印刷領域に対応するデータを要求する要求手段と、
    上記要求に係るデータが上記複数の画像データバッファにない場合には、その要求に係るデータを含む上記画像データバッファのサイズ分のデータを読み込んで、画像データを早く格納した画像データバッファから順に上記複数の画像データバッファに格納する読込手段と、
    上記画像データバッファから上記要求に係るデータを上記要求手段へ出力する出力手段と、
    を有することを特徴とするプリンタ。
  5. 前記読込手段は、前記要求に係るデータが先頭となるように、前記画像データバッファのサイズ分のデータを読み込むことを特徴とする請求項1から請求項4の中のいずれか1項記載のプリンタ。
JP2004078294A 2004-03-18 2004-03-18 プリンタ、画像印刷システムおよび印刷方法 Expired - Fee Related JP4529501B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004078294A JP4529501B2 (ja) 2004-03-18 2004-03-18 プリンタ、画像印刷システムおよび印刷方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004078294A JP4529501B2 (ja) 2004-03-18 2004-03-18 プリンタ、画像印刷システムおよび印刷方法

Publications (2)

Publication Number Publication Date
JP2005262651A JP2005262651A (ja) 2005-09-29
JP4529501B2 true JP4529501B2 (ja) 2010-08-25

Family

ID=35087690

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004078294A Expired - Fee Related JP4529501B2 (ja) 2004-03-18 2004-03-18 プリンタ、画像印刷システムおよび印刷方法

Country Status (1)

Country Link
JP (1) JP4529501B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4882905B2 (ja) 2007-08-03 2012-02-22 セイコーエプソン株式会社 画像データ処理装置および画像データ処理方法
JP4882926B2 (ja) * 2007-08-31 2012-02-22 セイコーエプソン株式会社 画像データ処理装置および画像データ処理方法
JP4882925B2 (ja) * 2007-08-31 2012-02-22 セイコーエプソン株式会社 画像データ処理装置および画像データ処理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001157029A (ja) * 1999-11-26 2001-06-08 Seiko Epson Corp 画像データ処理装置及び画像データ処理方法並びに記録媒体
JP2002230539A (ja) * 2001-01-31 2002-08-16 Mitsubishi Electric Corp 並列画像処理装置及び並列画像処理方法
JP2004082592A (ja) * 2002-08-28 2004-03-18 Seiko Epson Corp キャッシュメモリを有するプリンタ

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0239339A (ja) * 1988-07-29 1990-02-08 Hitachi Ltd キヤツシユメモリ装置
JPH04153753A (ja) * 1990-10-18 1992-05-27 Fujitsu Ltd キャッシュメモリ制御方式
JPH0553909A (ja) * 1991-08-23 1993-03-05 Pfu Ltd 画像データ処理におけるキヤツシユメモリ制御方式
JPH09101915A (ja) * 1995-10-06 1997-04-15 Matsushita Electric Ind Co Ltd キャッシュメモリの制御方法
JP4071886B2 (ja) * 1998-03-20 2008-04-02 松下電器産業株式会社 ブロック・サイズを変更可能なキャッシュ・メモリ・システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001157029A (ja) * 1999-11-26 2001-06-08 Seiko Epson Corp 画像データ処理装置及び画像データ処理方法並びに記録媒体
JP2002230539A (ja) * 2001-01-31 2002-08-16 Mitsubishi Electric Corp 並列画像処理装置及び並列画像処理方法
JP2004082592A (ja) * 2002-08-28 2004-03-18 Seiko Epson Corp キャッシュメモリを有するプリンタ

Also Published As

Publication number Publication date
JP2005262651A (ja) 2005-09-29

Similar Documents

Publication Publication Date Title
US7274478B2 (en) Image printing apparatus and image printing control method
JP4262186B2 (ja) 画像供給装置及び該装置の制御方法及び印刷システム
WO2000015442A1 (fr) Imprimante, dispositif de traitement d'images, procede de traitement d'images et support d'enregistrement
JP4574282B2 (ja) 画像供給デバイス及び該デバイスの制御方法及び印刷システムと印刷制御方法
US20090059312A1 (en) Image data processing apparatus and method
JP4529501B2 (ja) プリンタ、画像印刷システムおよび印刷方法
US8134736B2 (en) Image data processing apparatus and method
US20100238504A1 (en) Printing system
JP2006343922A (ja) 画像データ取得装置、印刷装置および画像データ取得方法
JP2004282382A (ja) ネットワーク端末装置
JP4604795B2 (ja) 画像データキャッシュ装置、印刷装置および画像データキャッシュ方法
US20020186242A1 (en) Image input control method, information processing apparatus, storage medium, and program
JP2006272723A (ja) 画像データキャッシュ装置、印刷装置および画像データキャッシュ方法
US11314995B2 (en) Image processing apparatus, image processing method, and storage medium
KR100727929B1 (ko) 양면 스캔시 스캔데이터 처리 방법 및 장치
JP3213203B2 (ja) ファクシミリ装置
JP2005262652A (ja) 画像出力指示装置、画像出力装置、画像保存装置、画像出力システム、画像出力指示方法および画像出力方法
JP2006277267A (ja) 画像データキャッシュ装置、印刷装置および画像データキャッシュ方法
JP3213093B2 (ja) ファクシミリ装置
JP4612822B2 (ja) 画像供給デバイス及び該デバイスの制御方法及び印刷システム
KR100677541B1 (ko) 양면 스캔시 흑백 압축방법을 이용한 스캔데이터 처리방법 및 장치
JP3313463B2 (ja) 画像処理装置
JP3715883B2 (ja) 情報処理装置、情報処理システム及び情報の再圧縮方法
JP4709246B2 (ja) 画像供給デバイス及び該デバイスの制御方法及び印刷システム
JP2009130590A (ja) プリンタ及びその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070115

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070403

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100406

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100427

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100518

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100531

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130618

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130618

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees