(57)【要約】【課題】  印刷処理において取得が要求された画像データを効率よく供給すること。【解決手段】  画像データ取得装置の取得手段９２は、印刷のために、画像ファイル内の画像データを取得する。バッファメモリ７１は、取得手段９２により取得された画像データを記憶する。供給手段９２は、印刷のための画像データの取得要求に係る画像データがバッファメモリ７１に記憶されている場合、バッファメモリ７１からその取得要求に係る画像データを読み込んで取得要求元へ供給し、取得要求に係る画像データがバッファメモリ７１に記憶されていない場合、その取得要求に係る画像データを取得手段９２に取得させて取得要求元へ供給する。【選択図】  図９
2006343922.tif 000002
【特許請求の範囲】
【請求項１】
印刷のために、画像ファイル内の画像データを取得する取得手段と、
上記取得手段により取得された画像データを記憶するバッファメモリと、
印刷のための画像データの取得要求に係る画像データが上記バッファメモリに記憶されている場合、上記バッファメモリからその取得要求に係る画像データを読み込んで取得要求元へ供給し、上記取得要求に係る画像データが上記バッファメモリに記憶されていない場合、その取得要求に係る画像データを上記取得手段に取得させて取得要求元へ供給する供給手段と、
を有することを特徴とする画像データ取得装置。
【請求項２】
前記画像データは、複数の画素で構成される画像のデータがその画像における複数の画素の配置に従った所定の順番で配列されたデータであり、
前記バッファメモリは、複数本の画像バッファを有し、
前記取得手段は、上記画像バッファの１本分の画像データを上記所定の順番に沿って取得すること、
を特徴とする請求項１記載の画像データ取得装置。
【請求項３】
前記取得手段は、前記画像バッファの１本分の画像データの先頭部分に、取得を要求された画像データが含まれるように、画像データを取得することを特徴とする請求項２記載の画像データ取得装置。
【請求項４】
前記バッファメモリは、複数本の画像バッファのすべてに画像データが記憶されている場合には、その中で最も古い画像データを記憶する画像バッファに、前記取得手段が新たに取得した画像データを上書きして記憶することを特徴とする請求項２または３記載の画像データ取得装置。
【請求項５】
前記取得手段は、デジタルカメラ、半導体メモリ、携帯端末あるいはコンピュータから、印刷に使用する画像データを取得することを特徴とする請求項１から４のうちのいずれか１項記載の画像データ取得装置。
【請求項６】
取得を要求された画像データをその要求元へ供給する請求項１から５の中のいずれか１項記載の画像データ取得装置と、
上記画像データ取得装置に対して印刷する画像の画像データの取得を要求し、それに応じて供給された画像データを用いて印刷制御データを生成する画像処理手段と、
上記印刷制御データに基づく印刷を実行する印刷手段と、
を有することを特徴とする印刷装置。
【請求項７】
印刷のための画像データの取得要求を受け取るステップと、
上記取得要求に係る画像データがバッファメモリに記憶されている場合、上記バッファメモリからその取得要求に係る画像データを読み込んで取得要求元へ供給し、上記取得要求に係る画像データが上記バッファメモリに記憶されていない場合、その取得要求に係る画像データを、画像ファイル内の画像データを取得する取得手段に取得させて取得要求元へ供給するとともに上記バッファメモリに記憶するステップと、
を有することを特徴とする画像データ取得方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データ取得装置、印刷装置および画像データ取得方法に関する。
【背景技術】
【０００２】
特許文献１および特許文献２には、印刷システムが開示されている。これらの従来の印刷システムは、ＵＳＢストレージクラスデバイスのデジタルカメラと、ＵＳＢホストのプリンタとを、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）で直接に接続する。そして、この従来の印刷システムでは、カメラは、そのボタンへの操作に応じてプリンタに対する印刷要求を生成し、プリンタは、この要求に基づいて印刷処理に必要となる画像データのファイルをカメラから読み込み、その画像データに基づいて画像を印刷する。
【０００３】
【特許文献１】特開２００３−２５９２７４号公報（図面、発明の詳細な説明）
【特許文献２】特開２００２−５６６７６号公報（図面、発明の詳細な説明）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
プリンタは、デジタルカメラにおいて印刷のために選択された画像を印刷するために、その画像のデータをデジタルカメラから何度も取得しなければならないことがある。たとえば、画像を９０度回転して印刷する場合において、その印刷する画像の画像データがＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）方式で圧縮されたものである場合、画像データ中の各行の先頭データ位置が一定の位置とはならない。そのため、プリンタは、その画像データを印刷のために取得する前に、その画像データにおける各行の先頭データ位置を特定するために画像データを取得しなければならない。この例のように、プリンタは、１回の印刷処理中に、デジタルカメラから同じ画像の画像データを何度も取得しなければならないことがある。
【０００５】
本発明は、印刷処理において取得が要求された画像データを効率よく供給する画像データ取得装置、それを用いた印刷装置および画像データ取得方法を得ることを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る画像データ取得装置は、印刷のために、画像ファイル内の画像データを取得する取得手段と、取得手段により取得された画像データを記憶するバッファメモリと、印刷のための画像データの取得要求に係る画像データがバッファメモリに記憶されている場合、バッファメモリからその取得要求に係る画像データを読み込んで取得要求元へ供給し、取得要求に係る画像データがバッファメモリに記憶されていない場合、その取得要求に係る画像データを取得手段に取得させて取得要求元へ供給する供給手段と、を有するものである。
【０００７】
この構成を採用すれば、ある画像データの取得要求に基づいて取得手段が画像データを取得した後には、その画像データをバッファメモリから読み込んで供給することができる。したがって、同じ画像データの取得要求が複数回あった場合、取得手段によるその画像データの取得回数は、取得要求の回数より減らすことが可能となる。そして、取得手段による画像データの取得回数が取得要求の回数より少なくなることで、印刷処理において取得が要求された画像データを効率よく取得要求元へ供給することができる。
【０００８】
本発明に係る画像データ取得装置は、上述した発明の構成に加えて、画像データが、複数の画素で構成される画像のデータがその画像における複数の画素の配置に従った所定の順番で配列されたデータであり、バッファメモリが、複数本の画像バッファを有し、取得手段が、画像バッファの１本分の画像データを所定の順番に沿って取得するものである。
【０００９】
この構成を採用すれば、取得手段は、画像バッファのサイズ毎に画像データを取得する。したがって、バッファメモリの記憶容量が画像データのデータ量より小さく、バッファメモリが画像データのすべてを記憶することができない場合であっても、取得手段が取得した画像データをバッファメモリに記憶し、このバッファメモリから読み出した画像データを、効率よく取得要求元へ供給することができる。
【００１０】
本発明に係る画像データ取得装置は、上述した発明の各構成に加えて、取得手段が、画像バッファの１本分の画像データの先頭部分に、取得を要求された画像データが含まれるように、画像データを取得するものである。
【００１１】
この構成を採用すれば、取得手段が取得する画像データの後部分には、取得を要求された画像データに続く画像データが含まれる。印刷処理において、画像データは画像ファイルの先頭から順番に使用される場合が多いため、画像バッファから、効率よく、画像データを供給することができることが多くなる。
【００１２】
本発明に係る画像データ取得装置は、上述した発明の各構成に加えて、バッファメモリが、複数本の画像バッファのすべてに画像データが記憶されている場合には、その中で最も古い画像データを記憶する画像バッファに、取得手段が新たに取得した画像データを上書きして記憶するものである。
【００１３】
この構成を採用すれば、バッファメモリには、取得手段が取得したデータの中の最新のものを記憶させることができる。印刷処理において、画像データは画像ファイルの先頭から順番に使用される場合が多いため、画像バッファから、効率よく、画像データを供給することができることが多くなる。
【００１４】
本発明に係る画像データ取得装置は、上述した発明の各構成に加えて、取得手段が、デジタルカメラ、半導体メモリ、携帯端末あるいはコンピュータから、印刷に使用する画像データを取得するものである。
【００１５】
この構成を採用すれば、デジタルカメラ、半導体メモリ、携帯端末あるいはコンピュータにある画像ファイルに基づき画像を効率よく印刷することができる。
【００１６】
本発明に係る印刷装置は、取得を要求された画像データをその要求元へ供給する上述した発明に係る各構成の画像データ取得装置と、画像データ取得装置に対して印刷する画像の画像データの取得を要求し、それに応じて供給された画像データを用いて印刷制御データを生成する画像処理手段と、印刷制御データに基づく印刷を実行する印刷手段と、を有するものである。
【００１７】
この構成を採用すれば、印刷処理において取得が要求された画像データを効率よく画像処理手段へ供給し、効率よく印刷をすることができる。
【００１８】
本発明に係る画像データ取得方法は、印刷のための画像データの取得要求を受け取るステップと、取得要求に係る画像データがバッファメモリに記憶されている場合、バッファメモリからその取得要求に係る画像データを読み込んで取得要求元へ供給し、取得要求に係る画像データがバッファメモリに記憶されていない場合、その取得要求に係る画像データを、画像ファイル内の画像データを取得する取得手段に取得させて取得要求元へ供給するとともにバッファメモリに記憶するステップと、を有するものである。
【００１９】
この方法を採用すれば、ある画像データの取得要求に基づいて画像データを取得した後には、その画像データをバッファメモリから読み込んで供給することができる。したがって、同じ画像データの取得要求が複数回あった場合、画像データの取得回数は、取得要求の回数より減らすことが可能となる。そして、画像データの取得回数が取得要求の回数より少なくなることで、印刷処理において取得が要求された画像データを効率よく取得要求元へ供給することができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施の形態に係る画像データ取得装置、印刷装置および画像データ取得方法を、図面に基づいて説明する。印刷装置は、プリンタを例として説明する。画像データ取得装置は、プリンタの一部として説明する。画像データ取得方法は、プリンタの動作の一部として説明する。
【００２１】
図１は、本発明の実施の形態に係るダイレクト印刷システムを示す図である。ダイレクト印刷システムは、デジタルスチルカメラ（ＤＳＣ：Ｄｉｇｉｔａｌ  Ｓｔｉｌｌ  Ｃａｍｅｒａ）１と、印刷装置としてのプリンタ２とを有する。また、ＤＳＣ１とプリンタ２とは、ＵＳＢケーブル３にて接続される。
【００２２】
図２は、図１中のＤＳＣ１のハードウェア構成を示すブロック図である。ＤＳＣ１は、プログラムを実行する中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、プログラムを記憶するフラッシュメモリ１２と、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）ポート１３と、これらを接続するシステムバス１４とを有する。
【００２３】
ＤＳＣ１のＩ／Ｏポート１３には、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）１５と、カードリーダ１６と、液晶モニタ１７と、入力デバイス１８と、ＵＳＢ通信Ｉ／Ｆ（ｉｎｔｅｒｆａｃｅ：インタフェース）１９とが接続される。
【００２４】
ＣＣＤ１５は、受光部を有する。この受光部は、複数の受光素子を有する。この複数の受光素子は、受光部に、その全体が略長方形となるように縦方向および横方向に並べて配列されている。各受光素子は、受光光量に応じたレベル信号を出力する。ＣＣＤ１５は、複数の受光素子から出力されるレベル信号に基づいて、受光素子と同数のピクセルデータを生成する。また、ＣＣＤ１５は、この生成した複数のピクセルデータを１つの撮像データとして出力する。
【００２５】
カードリーダ１６は、挿入部を有する。この挿入部には、カード形状に形成された半導体メモリ２０を挿入することができる。カード形状に形成された半導体メモリ２０としては、たとえばフラッシュメモリなどがある。そして、カードリーダ１６は、挿入部に挿入されている半導体メモリ２０にデータを書き込んだり、挿入部に挿入されている半導体メモリ２０からデータを読み出したりする。
【００２６】
液晶モニタ１７は、表示部を有する。液晶モニタ１７は、表示データに基づいて、表示部に、その表示データに基づく画像を表示する。
【００２７】
入力デバイス１８は、複数の入力キーやタッチパネルを有する。入力デバイス１８は、ユーザがプッシュ操作した入力キーに応じた入力データを出力する。また、入力デバイス１８は、タッチパネルのユーザにより押圧された位置に応じた入力データを出力する。
【００２８】
ＵＳＢ通信Ｉ／Ｆ１９は、ＵＳＢコネクタを有する。ＵＳＢコネクタには、ＵＳＢケーブル３が接続される。ＵＳＢ通信Ｉ／Ｆ１９は、ＵＳＢコネクタから信号が入力されるとその信号からデータを抽出する。また、ＵＳＢ通信Ｉ／Ｆ１９は、送信するデータに基づいて信号を生成し、この信号をＵＳＢコネクタへ出力する。
【００２９】
図３は、図２中のフラッシュメモリ１２の記憶内容を示す図である。ＤＳＣ１のフラッシュメモリ１２には、ＥＸＩＦ（Ｅｘｃｈａｎｇｅａｂｌｅ  Ｉｍａｇｅ  Ｆｉｌｅ  Ｆｏｒｍａｔ）画像データ生成プログラム２１と、印刷指示データ生成プログラム２２と、画像データ送信プログラム２３と、通信制御プログラム群とが記憶される。ＤＳＣ１の通信制御プログラム群は、ＵＳＢマスストレージクラスプログラム２４を有する。
【００３０】
ＥＸＩＦ画像データ生成プログラム２１は、中央処理装置１１に実行されることでＥＸＩＦ画像データ生成部を実現する。ＥＸＩＦ画像データ生成部は、ＣＣＤ１５から出力された撮像データを圧縮してＪＰＥＧ形式の画像データを生成し、この画像データにＥＸＩＦヘッダやサムネイル画像データを付加したＥＸＩＦ画像データを生成し、このＥＸＩＦ画像データをカードリーダ１６へ出力する。ＥＸＩＦヘッダには、画像の縦方向のピクセル数および横方向のピクセル数、撮影条件などを含めることができる。
【００３１】
印刷指示データ生成プログラム２２は、中央処理装置１１に実行されることで印刷指示データ生成部を実現する。印刷指示データ生成部は、液晶モニタ１７に画像選択画面や印刷条件選択画面を表示する。また、印刷指示データ生成部は、印刷指示データを生成する。この印刷指示データには、画像選択画面に基づいて選択された画像を、印刷条件選択画面に基づいて選択された印刷条件で印刷するための印刷指示が含まれる。
【００３２】
画像データ送信プログラム２３は、中央処理装置１１に実行されることで、画像データ送信部を実現する。画像データ送信部は、送信する画像データのファイルとそのファイルから抽出するデータ位置とが指定されると、そのファイルのそのデータ位置のデータを抽出する。また、画像データ送信部は、抽出したデータを出力する。
【００３３】
画像データのファイルは、あるデータ量を有する。このファイルのデータ位置とは、この画像ファイルの先頭ビットから数えた場合におけるそのあるビットの順番を示す値である。たとえば、データ位置として１０ｋバイトが指定されると、画像データ送信部は、ファイルの先頭ビットから１０ｋバイト目の所定の長さのデータを抽出する。
【００３４】
ＵＳＢマスストレージクラスプログラム２４は、中央処理装置１１に実行されることでＵＳＢマスストレージクラスを実現する。ＵＳＢマスストレージクラスでは、ホストとデバイスとの間でデータをバルク転送したりすることができる。なお、本実施の形態では、サブクラスとしては、ＳＣＳＩサブクラスが使用される。
【００３５】
図４は、図２のＤＳＣ１において撮像時に実現される機能を示すブロック図である。図４に示すように、撮像時には、ＤＳＣ１においてＥＸＩＦ画像データ生成部３１が実現される。
【００３６】
ＣＣＤ１５は、ＥＸＩＦ画像データ生成部３１へ撮像データを出力する。ＥＸＩＦ画像データ生成部３１は、この撮像データをＪＰＥＧ方式で圧縮し、ＥＸＩＦ画像データを生成する。カードリーダ１６は、このＥＸＩＦ画像データに所定のファイル名をつけて、このＥＸＩＦ画像データを半導体メモリ２０に書き込む。カードリーダ１６は、半導体メモリ２０内の複数のＥＸＩＦ画像データのファイル同士３２が互いに区別できるように、その複数のＥＸＩＦ画像ファイル３２には、互いに異なるファイル名を付加する。
【００３７】
図５は、図４中のＥＸＩＦ画像データ生成部３１による圧縮処理の説明図である。図５（Ａ）は、画像における複数のピクセルの配列を説明する図である。ＣＣＤ１５が出力する撮像データの画像は、図５（Ａ）に示すように、縦方向のピクセル数より横方向のピクセル数が多い、全体が横長の長方形の画像を構成するものとして説明する。
【００３８】
このような撮像データが入力されると、ＥＸＩＦ画像データ生成部３１は、図５（Ｂ）に示すように、８×８ピクセルを１つのブロックとして、そのブロック毎に空間周波数を演算する。なお、１ブロックあたりのピクセル数は、８×８に限られるものではなく、たとえば１６×１６などであってもよい。
【００３９】
また、ＥＸＩＦ画像データ生成部３１は、図５（Ｂ）に示すように、横長の画像の長辺に沿った図中上側のブロックの行から順番に、且つ、同じブロック行の中では図中左側のブロックから順番に、ブロックの空間周波数を演算する。図５（Ｂ）は、ブロックの画像上の配置を示す図である。
【００４０】
そして、図５（Ｂ）に示すようにｍ行ｎ列（ｍ、ｎは、１以上の整数）のブロックのすべてについて空間周波数を演算したら、ＥＸＩＦ画像データ生成部３１は、画像データの総データ量が所定のデータ量以下となるように空間周波数のデータを間引く。ＥＸＩＦ画像データ生成部３１は、ＪＰＥＧ形式の画像データの総データ量が所定量以下となるまでこのデータの間引き処理を繰り返す。以上のエンコード処理によって、ＥＸＩＦ画像データ生成部３１は、所定のデータ量以下のデータ量のＪＰＥＧ形式の画像データを生成する。なお、ＪＰＥＧ形式のデータにおいて複数のブロックのデータ量は、一定の量に揃わない。
【００４１】
図５（Ｃ）は、ＥＸＩＦ画像データ上での各ブロックのデータ配置を示す図である。ＥＸＩＦ画像データの先頭には、ＥＸＩＦヘッダのデータが格納される。このＥＸＩＦヘッダの後には、複数のブロックのデータがそのエンコード順にしたがって格納されている。つまり、ＥＸＩＦヘッダの後には、画像の左上のブロック（１）のデータが続く。画像の左上のブロック（１）のデータの次には、そのブロックの右隣りのブロック（２）のデータが続く。画像の一番上のブロック行の右端のブロック（ｎ）のデータの次には、画像の上から二行目のブロック行の左端のブロック（ｎ＋１）のデータが続く。複数のブロックデータの最後には、画像の右下のブロック（ｍ×ｎ）のデータがくる。複数のブロックの後には、ファイルのデータの終わりを示すＥＯＦ（Ｅｎｄ  Ｏｆ  Ｆｉｌｅ）データが格納される。
【００４２】
なお、このように撮像データをＪＰＥＧ形式に圧縮し、その圧縮された画像データを半導体メモリ２０に記憶させた場合、その画像における画像の行数は、ブロック行の行数となる。
【００４３】
図６は、図１中のプリンタ２のハードウェア構成を示すブロック図である。プリンタ２は、中央処理装置４１と、中央処理装置４１がプログラムの実行の際に利用するメモリ４２と、プログラムを記憶する記憶部４３と、Ｉ／Ｏポート４４と、これらを接続するシステムバス４５とを有する。
【００４４】
プリンタ２のＩ／Ｏポート４４には、ＵＳＢ通信Ｉ／Ｆ４６と、印刷手段としての印刷デバイス４７とが接続される。プリンタ２のＵＳＢ通信Ｉ／Ｆ４６は、ＤＳＣ１のＵＳＢ通信Ｉ／Ｆ１９と同様の機能を有するものであり、その説明を省略する。ただし、プリンタ２のＵＳＢ通信Ｉ／Ｆ４６は、ＵＳＢホストとして機能し、ＤＳＣ１のＵＳＢ通信Ｉ／Ｆ１９は、ＵＳＢデバイスとして機能する。
【００４５】
図７は、図１中のプリンタ２の内部機構を示す透過斜視図である。印刷デバイス４７は、給紙トレイ５１と、給紙ローラ５２と、搬送ローラ対５３と、排紙トレイ５４と、キャリッジ５５と、キャリッジ保持部材５６とを有する。給紙ローラ５２と、搬送ローラ対５３と、キャリッジ保持部材５６と、キャリッジ５５とは、プリンタ２の筐体５７の内部に配設される。
【００４６】
給紙トレイ５１には、用紙５８が載置される。給紙ローラ５２は、給紙トレイ５１上の用紙５８をニップし、給紙トレイ５１内の一番上の用紙５８を排紙トレイ５４の方向へ送り出す。搬送ローラ対５３は、この給紙トレイ５１から送り出された用紙５８をさらに排紙トレイ５４の方向へ送る。これにより、給紙トレイ５１に載置された用紙５８は、１枚ずつ給紙トレイ５１から排紙トレイ５４へ搬送され、排紙トレイ５４に排出される。
【００４７】
キャリッジ保持部材５６は、長い棒形状に形成される。また、このキャリッジ保持部材５６は、搬送ローラ対５３と排紙トレイ５４との間の用紙５８の搬送経路の上方において、その長尺方向が搬送ローラ対５３の伸在方向と略平行となる姿勢で配設される。キャリッジ５５は、このキャリッジ保持部材５６に移動可能に取り付けられる。これにより、キャリッジ５５は、搬送ローラ対５３の伸在方向に移動することができる。
【００４８】
キャリッジ５５は、インクタンクと、複数のノズルとを有する。ノズルは、インクタンク内のインクを吐出する。また、複数のノズルは、キャリッジ５５の移動方向と垂直な方向に沿って並べて形成される。なお、複数のノズルは、複数の列に分けて並べられていてもよい。
【００４９】
このような構成を有する印刷デバイス４７は、印刷制御データに基づいて搬送ローラ対５３を回転させて、キャリッジ５５に対向する位置（印刷位置）に用紙５８を搬送する。また、印刷デバイス４７は、印刷制御データに基づいてキャリッジ５５を移動させながら、所定のノズルからインクを吐出させる。そして、キャリッジ５５に１印刷行分のインクを吐出させたら、印刷デバイス４７は、搬送ローラ対５３を回転させて用紙５８をその１印刷行分だけ送る。また、印刷デバイス４７は、次の印刷制御データに基づいてキャリッジ５５を移動させながら、所定のノズルからインクを吐出させる。このように１印刷行ずつのキャリッジ５５からのインクの吐出制御と、１印刷行ずつの用紙５８送りとを交互に繰り返すことで、印刷デバイス４７は、用紙５８の紙面に印刷制御データに基づく画像を形成する。
【００５０】
また、印刷デバイス４７は、用紙５８へのインクの吐出が完了したら、搬送ローラ対５３を回転させて、印刷位置から排紙トレイ５４へ用紙５８を排出する。これにより、印刷制御データに基づく画像が形成された用紙５８が排紙トレイ５４に排出されることになる。
【００５１】
図８は、図６中の記憶部４３の記憶内容を示す図である。プリンタ２の記憶部４３には、印刷指示データ解釈プログラム６１と、キャッシュシステムプログラム６２と、デコーダプログラム６３と、印刷制御データ生成プログラム６４と、通信制御プログラム群とが記憶される。プリンタ２の通信制御プログラム群は、ＵＳＢマスストレージクラスプログラム６５を有する。図９は、図１のダイレクト印刷システムに実現される機能を示すブロック図である。図８に示す各種プログラムを実行することで、図９におけるプリンタ２側の各種機能が実現される。
【００５２】
ＵＳＢマスストレージクラスプログラム６５は、中央処理装置４１に実行されることでＵＳＢマスストレージクラス９５を実現する。なお、本実施の形態では、サブクラスとしてＳＣＳＩサブクラスが使用される。
【００５３】
印刷指示データ解釈プログラム６１は、中央処理装置４１に実行されることで印刷指示データ解釈部９１を実現する。印刷指示データ解釈部９１は、印刷指示データを解釈して、その印刷指示データにて指定された印刷処理をプリンタ２に実行させる。
【００５４】
キャッシュシステムプログラム６２は、中央処理装置４１に実行されることで、取得手段および供給手段としてのキャッシュシステム９２を実現する。キャッシュシステム９２は、メモリ４２に、バッファメモリとしてのキャッシュメモリ７１を生成する。このキャッシュメモリ７１は、所定本数の画像バッファとしてのキャッシュバッファ７２を有する。各キャッシュバッファ７２には、記憶しているデータのファイル名（ファイルＩＤ）およびデータ位置の範囲を示す情報と、キャッシュした順番（たとえば時刻）の情報とが対応付けられる。
【００５５】
図１０は、図６中のメモリ４２に生成されるキャッシュメモリ７１の構成を示す図である。図１０のキャッシュメモリ７１は、Ｐ本のキャッシュバッファ７２を有する。また、各キャッシュバッファ７２は、そのサイズ分のデータを記憶する領域として生成される。
【００５６】
なお、キャッシュバッファ７２の本数Ｐは、印刷可能な画像データサイズの上限値に対応する所定の大きな値とされる。たとえば、ブロックの縦横ピクセル数がｈであるＥＸＩＦ（ＪＰＥＧ）形式の画像データの場合、画像処理手段としてのデコーダ９３によりデコード可能な画素数（画像の一辺の画素数）がαとし、画像の縦横比が３：４とすると、Ｐは、値（α×３／４）／ｈ（＝α／ｈ×３／４）の小数点以下を切り上げた整数とされる。あるいは４ｕｐの場合を想定して、たとえば、ブロックの縦横ピクセル数がｈであるＥＸＩＦ（ＪＰＥＧ）形式の画像データの場合、デコーダ９３によりデコード可能な画素数（画像の一辺の画素数）がαとし、画像の縦横比が３：４とすると、Ｐは、値（α×３／４）／ｈ×２（＝α／ｈ×３／２）の小数点以下を切り上げた整数とされる。
【００５７】
また、キャッシュシステム９２は、デコーダ９３からデータの出力要求があったら、まず、その取得要求に係るデータがキャッシュメモリ７１に記憶されているか否かを確認する。そして、取得要求に係るデータがキャッシュメモリ７１に記憶されている場合には、キャッシュシステム９２は、そのデータをキャッシュメモリ７１から読み出して出力する。
【００５８】
取得要求に係るデータがキャッシュメモリ７１に記憶されていない場合には、キャッシュシステム９２は、その取得要求に係るデータが先頭となるように１つのキャッシュバッファ７２のサイズに等しいバイト数のデータの送信要求を生成する。なお、この送信要求では、そのキャッシュするデータのファイル名（あるいはファイルＩＤ）も指定される。
【００５９】
また、キャッシュシステム９２は、要求したデータを受信すると、空いているキャッシュバッファ７２を選択して、その選択したキャッシュバッファ７２に受信したデータを格納する。なお、空いているキャッシュバッファ７２が無い場合には、キャッシュシステム９２は、最も早くキャッシュしたキャッシュバッファ７２を選択し、その選択したキャッシュバッファ７２に受信したデータを格納する。ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ：先読先出）方式でキャッシュメモリ７１が更新される。また、キャッシュシステム９２は、その新たなデータを格納したキャッシュバッファ７２からあるいはＵＳＢホスト９５から出力要求に係るデータを取得し、デコーダ９３へ出力する。
【００６０】
図８に示すデコーダプログラム６３は、中央処理装置４１に実行されることで、デコーダ９３を実現する。デコーダ９３は、ＥＸＩＦ画像データを復号化し、ロウ（ＲＡＷ）画像データを生成する。復号化後の画像データでは、各ピクセルのデータが、データとしてピクセル毎に互いに独立した状態に分かれている。データがピクセル毎に分かれている画像データとしては、たとえば、ビットマップ形式の画像データ、ＴＩＦＦ（Ｔａｇｇｅｄ  Ｉｍａｇｅ  Ｆｉｌｅ  Ｆｏｒｍａｔ）形式の画像データなどがある。
【００６１】
印刷制御データ生成プログラム６４は、中央処理装置４１に実行されることで印刷制御データ生成部９４を実現する。印刷制御データ生成部９４は、データがピクセル毎に分かれている画像データと印刷のレイアウト情報とに基づいて、印刷デバイス４７のキャリッジ５５および搬送ローラ対５３を制御するための印刷制御データを生成する。
【００６２】
次に、以上のような構成を有するダイレクト印刷システムの動作を説明する。
【００６３】
ＤＳＣ１のＵＳＢ通信Ｉ／Ｆ１９とプリンタ２のＵＳＢ通信Ｉ／Ｆ４６とがＵＳＢケーブル３で接続される。そして、ＤＳＣ１では、印刷指示データ生成部８１と、画像データ送信部８２と、ＵＳＢマスストレージクラス８３とが実現される。また、プリンタ２では、印刷指示データ解釈部９１と、キャッシュシステム９２と、デコーダ９３と、印刷制御データ生成部９４と、ＵＳＢマスストレージクラス９５とが実現される。キャッシュシステム９２は、キャッシュメモリ７１を生成する。
【００６４】
プリンタ２のＵＳＢ通信Ｉ／Ｆ４６は、ＤＳＣ１のＵＳＢ通信Ｉ／Ｆ１９へ、ＵＳＢのディスクリプタの送信要求を送信する。
【００６５】
ＵＳＢ通信Ｉ／Ｆ１９は、このディスクリプタの送信要求に応じて、ＤＳＣ１のディスクリプタを出力する。ＤＳＣ１のディスクリプタは、プリンタ２のＵＳＢ通信Ｉ／Ｆ４６へ送信される。プリンタ２のＵＳＢ通信Ｉ／Ｆ４６は、受信したＤＳＣ１のディスクリプタに基づいて、エンドポイントと呼ばれる通信バッファを生成する。このエンドポイントには、ＵＳＢマスストレージクラス８３，９５同士がデータをバルク転送するために使用するものが含まれている。これにより、ＵＳＢのコンフィグレーション処理は、完了する。
【００６６】
印刷指示データ生成部８１は、まず、半導体メモリ２０から、半導体メモリ２０に記憶されているＥＸＩＦ画像ファイル３２のファイル名のリストを読み込み、このファイル名のリストを割り付けたＥＸＩＦ画像ファイル３２の選択画面の表示データを液晶モニタ１７に出力する。これにより、液晶モニタ１７には、ＥＸＩＦ画像ファイル３２の選択画面が表示される。なお、印刷指示データ生成部８１は、ファイル名の替わりにサムネイル画像を読み込み、サムネイル画像を割り付けたＥＸＩＦ画像ファイル３２の画像選択画面を液晶モニタ１７に表示させてもよい。
【００６７】
ユーザは、入力キーあるいはタッチパネルを操作して、液晶モニタ１７に表示されているファイル名のリストの中から、ファイル名を選択する。この選択操作に応じて、入力デバイス１８は、入力データを生成する。印刷指示データ生成部８１は、入力データに基づいて、ファイル名を選択する。なお、ユーザが複数のファイル名を選択する操作をした場合には、印刷指示データ生成部８１は、その複数のファイル名を選択する。
【００６８】
画像を選択した後、印刷指示データ生成部８１は、印刷条件選択画面を液晶モニタ１７に表示させる。ユーザの操作に応じて入力デバイス１８は、入力データを生成する。この入力データに基づいて、印刷指示データ生成部８１は、印刷条件を選択する。なお、印刷条件としては、たとえば画像の印刷品質（高画質、標準など）、用紙５８の種類（Ａ４、Ｂ５、Ｌ判など）、１枚の用紙５８に印刷する画像のレイアウト（１ｕｐ、２ｕｐ、４ｕｐなど）などがある。
【００６９】
画像および印刷条件を選択したら、印刷指示データ生成部８１は、印刷指示データを生成する。
【００７０】
印刷指示データを生成した後、印刷指示データ生成部８１は、この生成した印刷指示データをＵＳＢマスストレージクラス８３によりプリンタ２へ送信する。
【００７１】
プリンタ２のＵＳＢマスストレージクラス９５は、印刷指示データを受信すると、印刷指示データを印刷指示データ解釈部９１へ出力する。なお、この印刷指示データの送信は、たとえば特開２００３−２５６１５４号公報と同様の方法を利用すればよい。
【００７２】
図１１は、図１０中の印刷指示データ解釈部９１の動作を示すフローチャートである。
【００７３】
印刷指示データ解釈部９１は、印刷指示データが入力されると、その印刷指示データにて指定される印刷処理の制御を開始する（ステップＳ１）。具体的には、印刷指示データ解釈部９１は、まず、印刷指示データの中からファイル名（あるいはファイルＩＤ）を抽出し、そのファイル名等のファイルの画像サイズ情報の取得要求データを生成する。
【００７４】
この画像サイズ情報の取得要求データは、ＳＣＳＩホスト９７からプリンタ２のＵＳＢマスストレージクラス９５へ渡され、プリンタ２のＵＳＢマスストレージクラス９５により、ＤＳＣ１のＵＳＢマスストレージクラス８３へ転送される。ＤＳＣ１のＵＳＢマスストレージクラス８３は、この画像サイズ情報の取得要求データを画像データ送信部８２へ出力する。
【００７５】
画像データ送信部８２は、画像サイズ情報の取得要求データを受け取ると、その取得要求データに含まれるファイル名を抽出する。また、画像データ送信部８２は、そのファイル名のファイル３２のＥＸＩＦヘッダから、画像の縦方向のピクセル数および横方向のピクセル数を読み込み、この画像の縦方向のピクセル数および横方向のピクセル数の情報を出力する。
【００７６】
この画像の縦方向のピクセル数および横方向のピクセル数の情報は、ＤＳＣ１のＵＳＢマスストレージクラス８３によりプリンタ２へ送信され、プリンタ２のＵＳＢマスストレージクラス９５により印刷指示データ解釈部９１に入力される。
【００７７】
画像の縦方向のピクセル数と横方向のピクセル数の情報が入力されると、印刷指示データ解釈部９１は、印刷指示データに含まれるレイアウト情報とそれらの縦横の各ピクセル数とに基づいて、画像を回転して印刷するか否かを判断する（ステップＳ２）。
【００７８】
たとえば、キャリッジ走査方向が用紙５８の短辺と平行であって、印刷レイアウトが１ｕｐまたは４ｕｐである場合、画像の縦方向のピクセル数が横方向のピクセル数より小さいときには、印刷指示データ解釈部９１は、画像を回転すると判断し、画像の縦方向のピクセル数が横方向のピクセル数以上であるときには、印刷指示データ解釈部９１は、画像を回転しないと判断する。
【００７９】
また、たとえば、キャリッジ走査方向が用紙５８の短辺と平行であって、印刷レイアウトが２ｕｐまたは８ｕｐである場合、画像の縦方向のピクセル数が横方向のピクセル数以下であるときには、印刷指示データ解釈部９１は、画像を回転しないと判断し、画像の縦方向のピクセル数が横方向のピクセル数より大きいときには、印刷指示データ解釈部９１は、画像を回転すると判断する。
【００８０】
図１２は、画像のピクセル数について説明する図である。図１２（Ａ）に示すように、画像の横ピクセル数は、エンコード方向に沿った一辺（つまりブロック行）のピクセル数であり、画像の縦ピクセル数は、エンコード方向に対して垂直な一辺（つまりブロック列）のピクセル数である。
【００８１】
また、画像を回転すると判断する場合には、図１２（Ｂ）に示すように、キャリッジの走査方向（つまり１回に印刷するライン向き）と画像データのエンコード方向に対応する画像２０１上の方向とが垂直となる場合である。画像データのエンコード方向は、複数の画素で構成される画像データ中での、複数の画素の配列方向である。
【００８２】
画像を回転する必要がないと判断した場合、印刷指示データ解釈部９１は、ファイル名を指定して、そのファイル名のファイル３２に含まれるＥＸＩＦ画像データをデコードする指示をデコーダ９３へ出力する（ステップＳ３）。つまり、印刷指示データ解釈部９１は、画像を回転することなくデコード処理を行う指示をデコーダ９３へ出力する。
【００８３】
また、画像を回転する必要があると判断した場合、印刷指示データ解釈部９１は、ファイル名（あるいはファイルＩＤ）を指定するとともに、そのファイル名等のファイル３２に含まれるＥＸＩＦ画像データの画像を回転しながらデコードする指示をデコーダ９３へ出力する（ステップＳ４）。
【００８４】
図１３は、図１０中のデコーダ９３の動作を示すフローチャートである。図１４は、図１０中のキャッシュシステム９２の動作を示すフローチャートである。
【００８５】
図１３に示すように、デコーダ９３は、まず、印刷指示データ解釈部９１からのデコード指示に画像を回転させる指示が含まれているか否かを判断する（ステップＳ１１）。
【００８６】
画像を回転させる指示が含まれていない場合、デコーダ９３は、ＥＸＩＦ画像データの読み込みを開始する（ステップＳ１２）。具体的には、デコーダ９３は、ファイル名を指定して、そのファイルの先頭から１ワード分のデータを出力する指示をキャッシュシステム９２へ出力する。
【００８７】
図１４に示すように、キャッシュシステム９２は、ファイルの先頭から１ワード分のデータを出力する指示が入力されると、その指示に係る１ワード分のデータがキャッシュメモリ７１内に格納されているか否かを判断する（ステップＳ３１）。指定されたファイル名のＥＸＩＦ画像ファイル３２をはじめて読み込む場合には、そのファイルのデータはキャッシュメモリ７１に読み込まれていない。したがって、キャッシュシステム９２は、その指示に係る１ワード分のデータがキャッシュメモリ７１内に格納されていないと判断する。
【００８８】
指示に係る１ワード分のデータがキャッシュメモリ７１内に格納されていない場合、キャッシュシステム９２は、データの送信要求を生成する（ステップＳ３２）。このデータの送信要求には、要求に係るファイル名と、読み込むデータのデータ位置の範囲（たとえば読み込むデータ位置の範囲の先頭バイトのデータ位置と最終バイトのデータ位置とを組み合わせたもの）とが含まれる。最初のデータの送信要求では、読み込むデータの先頭バイトとしてファイルの先頭バイトが指定され、最終バイトとしてキャッシュバッファ７２のサイズに相当するバイトが指定される。
【００８９】
このデータの送信要求は、キャッシュシステム９２から出力された後、プリンタ２のＵＳＢマスストレージクラス９５、プリンタ２のＵＳＢ通信Ｉ／Ｆ４６、ＤＳＣ１のＵＳＢ通信Ｉ／Ｆ１９およびＤＳＣ１のＵＳＢマスストレージクラス８３を介して、画像データ送信部８２へ送信される。
【００９０】
画像データ送信部８２は、データの送信要求が入力されると、その要求に係るデータを半導体メモリ２０から読み込む。この最初のデータの要求に基づいて、画像データ送信部８２は、指定されたファイル名のＥＸＩＦ画像ファイル３２の先頭バイトから、キャッシュバッファ７２のサイズに相当するバイトまでのデータを読み込む。
【００９１】
画像データ送信部８２に読み込まれたデータは、画像データ送信部８２から出力された後、ＤＳＣ１のＵＳＢマスストレージクラス８３、ＤＳＣ１のＵＳＢ通信Ｉ／Ｆ１９、プリンタ２のＵＳＢ通信Ｉ／Ｆ４６およびプリンタ２のＵＳＢマスストレージクラス９５を介して、キャッシュシステム９２へ送信される。
【００９２】
キャッシュシステム９２は、要求していたデータが入力されると、そのデータを空いているキャッシュバッファ７２に書き込む（ステップＳ３３）。また、キャッシュシステム９２は、そのキャッシュバッファ７２に格納したデータのファイル名および格納しているデータ位置の範囲を示す情報と、キャッシュした時刻の情報とを記憶する。なお、空いているキャッシュバッファ７２が無い場合には、キャッシュシステム９２は、最も古いデータをキャッシュしたキャッシュバッファ７２を選択し、その選択したキャッシュバッファ７２に受信したデータを上書きする。
【００９３】
そして、キャッシュシステム９２は、そのデータをデコーダ９３へ出力する（ステップＳ３４）。
【００９４】
キャッシュシステム９２に要求した１ワード分のデータがキャッシュシステム９２から入力されると、図１３に示すように、デコーダ９３は、そのデータの入力によって、ブロック１つ分のすべてのデータの読み込みが完了したか否かを判断する（ステップＳ１３）。そして、デコーダ９３は、ＪＰＥＧの符号化ブロック１つ分のすべてのデータの読み込みが完了するまで、次の１ワード分のデータの出力要求をキャッシュシステム９２へ繰り返し出力する。
【００９５】
キャッシュシステム９２は、図１４に示すように、デコーダ９３から１ワード分のデータの出力要求が入力される度に、キャッシュバッファ７２のデータの範囲を示す情報と要求されたデータの位置とを比較して、その要求に係るデータがキャッシュメモリ７１内にあるか否かを判断する（ステップＳ３１）。また、キャッシュシステム９２は、キャッシュメモリ７１内にデータがある場合には、キャッシュメモリ７１から読み出して出力し（ステップＳ３４）、キャッシュメモリ７１内にデータがない場合には、ＤＳＣ１から新たなデータを取得して（ステップＳ３２，Ｓ３３）、要求に係るデータを出力する（ステップＳ３４）。
【００９６】
デコーダ９３は、図１３に示すように、ブロック１つ分のすべてのデータの読み込みが完了すると、そのブロックのデコード処理を行う（ステップＳ１４）。デコーダ９３は、復号化したピクセル毎のピクセルのデータを印刷制御データ生成部９４へ出力する。なお、デコード処理は、１ブロック毎ではなく所定の数のブロックに対してまとめて行うようにしてもよい。
【００９７】
デコード処理が完了すると、デコーダ９３は、印刷指示データ解釈部９１が指定したファイルのＥＸＩＦ画像データをすべて読み込んだか否かを判断する（ステップＳ１５）。そして、デコーダ９３は、指定されたファイルのすべてのＥＸＩＦ画像データを読み込んだ場合には、デコード処理を終了する。
【００９８】
なお、ファイルのすべてのＥＸＩＦ画像データを読み込んだ否かは、ファイルの最後に付加されているＥＯＦデータを読み込んだか否かに基づいて判断すればよい。
【００９９】
指定されたファイルのすべてのＥＸＩＦ画像データの読込みが完了していない場合には、デコーダ９３は、次のブロックの先頭ビットから、ワード毎のデータ読み込み処理を再開する（ステップＳ１６）。
【０１００】
なお、ブロック１つ分のすべてのデータの読み込みが完了したと判断する際に、デコーダ９３は、その最後に読み込んだデータの最終バイトの次のバイトを次のブロックの先頭バイトと判断する。
【０１０１】
以上の処理により、印刷指示データ解釈部９１がデコーダ９３に指定したファイルのＥＸＩＦ画像データはすべて、ピクセル毎のピクセルデータへ変換され、印刷制御データ生成部９４へ出力される。
【０１０２】
印刷制御データ生成部９４は、ブロック毎に入力されるピクセルデータを保持する。そして、印刷制御データ生成部９４は、少なくとも１印刷行（つまり、少なくとも１回のキャリッジ走査）分のピクセルデータがそろったら、その１印刷行分のピクセルデータに基づいて印刷制御データを生成する。印刷デバイス４７は、この印刷制御データを用いて用紙５８に少なくとも１行分の印刷処理を行う。
【０１０３】
また、印刷制御データ生成部９４は、この１印刷行分のピクセルデータに基づく印刷制御データの生成処理を、すべてのピクセルデータについて繰り返す。これにより、排紙トレイ５４に排出される用紙５８には、印刷指示データ解釈部９１がデコーダ９３に指定したファイルのＥＸＩＦ画像データに基づく画像が所定のレイアウトにて形成される。また、その画像は、画像の長手方向が用紙５８の給紙方向となる姿勢にて形成される。
【０１０４】
ところで、デコーダ９３によるワード単位でのデータ読み込みが進んで、キャッシュバッファ７２内にデコーダ９３により要求されるデータがなくなると、キャッシュシステム９２は、１つのキャッシュバッファ７２分のデータをＤＳＣ１から新たに取得する。また、キャッシュシステム９２は、ＤＳＣ１から新たに取得したデータを、空いているキャッシュバッファ７２、あるいは、空いているキャッシュバッファ７２が無い場合には最も更新時刻が古いキャッシュバッファ７２に格納する。また、キャッシュシステム９２は、新たに取得したデータの中から、デコーダ９３により要求されたデータを読み出して、デコーダ９３へ出力する。
【０１０５】
このように、キャッシュメモリ７１にキャッシュされるデータは、デコーダ９３によるワード単位でのデータ読み込みが進むにつれて更新される。また、先にキャッシュしたデータは、後からキャッシュしたデータによって消去される。
【０１０６】
図１５は、画像を回転しない場合におけるキャッシュメモリ７１の状態変化の一例を示す図である。図１５（Ａ）は、キャッシュメモリ７１に読み込まれるＥＸＩＦ画像データのデータ構造を示すものである。図１５（Ｂ）は、画像を回転させずにデコードする場合において、デコードを開始した直後のキャッシュメモリ７１の記憶状態の一例を示す図である。図１５（Ｃ）は、画像を回転させずにデコードする場合において、デコードを終えた時のキャッシュメモリ７１の記憶状態の一例を示す図である。
【０１０７】
画像を回転させずにデコードする場合、図１５に例示するように、キャッシュメモリ７１には、ＥＸＩＦ画像データの先頭から順番に読み込まれる。また、空いているキャッシュバッファ７２が無くなったら、古いデータを記憶するキャッシュバッファ７２から順番に、新たに読み込んだデータにて上書きされる。
【０１０８】
したがって、ＥＸＩＦ画像データを回転させずに印刷する場合には、キャッシュシステム９２は、ＥＸＩＦ画像データを、キャッシュバッファ７２のサイズ分ずつ先頭から順番にキャッシュする。また、ＥＸＩＦ画像データの各バイトは、１回ずつキャッシュメモリ７１に読み込まれる。
【０１０９】
図１３に戻り、印刷指示データ解釈部９１からのデコード指示に画像を回転させる指示が含まれている場合には、デコーダ９３は、そのデコードを指示されたＥＸＩＦ画像データのプレスキャンを開始する（ステップＳ１７）。
【０１１０】
プレスキャンにおいて、デコーダ９３は、ファイル名を指定して、キャッシュシステム９２に対して１ワード単位でデータ読込み指示を出力し、ＥＸＩＦ画像データを先頭から最後まで順番に読み込む。図１４に示すように、キャッシュシステム９２は、デコーダ９３から要求されたデータがキャッシュメモリ７１にある場合には、そのキャッシュメモリ７１からデータを読み出してデコーダ９３へ出力し（ステップＳ３４）、デコーダ９３から要求されたデータがキャッシュメモリ７１にない場合には、そのデータを含むデータをＤＳＣ１からキャッシュバッファ７２へ読み込み（ステップＳ３２、Ｓ３３）、その１ワードのデータをデコーダ９３へ出力する（ステップＳ３４）。
【０１１１】
キャッシュシステム９２から１ワード分のデータが入力されると、デコーダ９３は、そのデータが、ブロック行の先頭バイトであるか否かを判断する。ブロック行の先頭バイトとは、画像においてブロック行の左端に位置するブロックの先頭バイトである。
【０１１２】
そして、キャッシュシステム９２から入力されたデータがブロック行の先頭バイトである場合には、デコーダ９３は、その先頭バイトの、ＥＸＩＦ画像データにおけるデータ位置、すなわちＥＸＩＦ画像データの先頭ビットから何バイト目のデータであるのかを記憶する。
【０１１３】
デコーダ９３は、ＥＸＩＦ画像データの終わりまでワード単位でのデータ取得を繰り返す。そして、ＥＸＩＦ画像データの終わりまでワード単位でのデータ取得を繰り返した後には、デコーダ９３は、ＥＸＩＦ画像データに含まれる画像のすべてのブロック行の先頭バイトのデータ位置を記憶している。なお、各ブロック行の先頭バイトのデータ位置は、それぞれのポインタバッファに記憶される。
【０１１４】
以上のプレスキャン処理を完了したら、デコーダ９３は、ＥＸＩＦ画像データのデコードのための読み込みを開始する（ステップＳ１８）。デコーダ９３は、まず、画像の一番上のブロック行（つまり、画像データの先頭に最も近い１行分のブロック）の先頭バイトからワード単位でのデータ読み込みを開始する。キャッシュシステム９２は、デコーダ９３に要求されたデータを、必要に応じてキャッシュしながらデコーダ９３へ出力する。なお、本実施の形態では、画像の上とは、画像データのはじめの部分による画像部分をいい、画像の左とは、画像データの最初のブロックによる画像が配置される側をいう。
【０１１５】
また、デコーダ９３は、ブロック１つ分のすべてのデータの読み込みが完了したか否かを判断し（ステップＳ１９）、それが完了するまでワード単位のデータの読み込みを繰り返す。
【０１１６】
そして、ブロック１つ分のすべてのデータの読み込みが完了すると、デコーダ９３は、そのデータの次のバイトのデータ位置を記憶する。デコーダ９３は、このブロック行について、この新たなデータ位置を、このブロック行のポインタバッファに上書きする（ステップＳ２０）。
【０１１７】
ポインタバッファに格納するデータ位置を更新したら、デコーダ９３は、読み込んだブロックのデコード処理を行う（ステップＳ２１）。また、デコーダ９３は、デコード処理により生成したピクセル毎のピクセルのデータを印刷制御データ生成部９４へ出力する。なお、デコーダ９３は、複数ブロックをまとめて復号化するようにしてもよい。
【０１１８】
デコード処理が完了すると、デコーダ９３は、印刷指示データ解釈部９１が指定したファイル３２のＥＸＩＦ画像データをすべてデコードしたか否かを判断する（ステップＳ２２）。そして、デコーダ９３は、指定されたファイルのすべてのＥＸＩＦ画像データをデコードした場合には、デコード処理を終了する。
【０１１９】
指定されたファイルのすべてのＥＸＩＦ画像データの読込みが完了していない場合には、デコーダ９３は、さらに画像のブロック列１列（つまり、少なくとも１回のキャリッジ走査による印刷に必要なブロック１列）分のデータ読込みが完了しているか否かを判断する（ステップＳ２３）。
【０１２０】
画像の左上のブロックのデコード処理が完了した時点では、ＥＸＩＦ画像データをデコードのためにすべて読み込んでおらず、また、画像のブロック列１列分のデータ読込みも完了していない。そのため、デコーダ９３は、次のブロック行のデコード処理を開始する（ステップＳ２４）。
【０１２１】
具体的には、デコーダ９３は、画像の上から二行目のブロック行に対応するポインタバッファからデータ位置を読み込み、このデータ位置からワード単位でのデータ読み込みを開始する。そして、デコーダ９３は、ブロック１つ分のデータを読み込んだら（ステップＳ１９）、その画像の上から二行目のブロック行のポインタバッファの値を、そのブロックの最後のデータの次のデータのデータ位置に更新し（ステップＳ２０）、そのブロックのデコード処理を行う（ステップＳ２１）。
【０１２２】
また、デコーダ９３は、このブロック行毎のデコード処理（ステップＳ１９〜Ｓ２４）を繰り返す。そして、画像の左端のブロック列のすべてのブロックについてデコード処理が完了すると、デコーダ９３は、画像の一番上のブロック行についてのデコード処理を行う（ステップＳ２５）。このとき、画像の一番上のブロック行に対応するポインタバッファには、画像の左端のブロックの最終バイトの次のバイトのデータ位置が格納されている。したがって、デコーダ９３は、画像の一番上のブロック行の左から二番目のブロックのデコード処理を行うことになる。
【０１２３】
以上のように、デコーダ９３は、画像のブロック行毎にブロックの先頭ビットを格納するポインタバッファを設け、各ブロックのデータを読み込んだらこのポインタバッファに格納されるデータ位置を順次更新し、複数のブロック行について順番にデコード処理を繰り返す。これにより、デコーダ９３は、画像の左側（つまり最初に印刷される画像に対応するブロック列）のブロック列から右側のブロック列までについて順番にデコード処理を行うことになる。
【０１２４】
また、印刷制御データ生成部９４は、ブロック毎に入力されるピクセルデータを保持する。そして、印刷制御データ生成部９４は、少なくとも１印刷行（つまり、少なくとも１回のキャリッジ走査）分のピクセルデータがそろったら、その１印刷行分のピクセルデータに基づいて印刷制御データを生成する。印刷デバイス４７は、この印刷制御データを用いて用紙５８に少なくとも１行分の印刷処理を行う。
【０１２５】
また、印刷制御データ生成部９４は、この少なくとも１印刷行分のピクセルデータに基づく印刷制御データの生成処理を、すべてのピクセルデータについて繰り返し行う。これにより、排紙トレイ５４に排出される用紙５８には、印刷指示データ解釈部９１がデコーダ９３に指定したファイルのＥＸＩＦ画像データに基づく画像が所定のレイアウトにて形成される。また、その画像は、画像の長手方向が用紙５８の給紙方向となる姿勢にて、つまり９０度あるいは２７０度に回転して形成される。
【０１２６】
ところで、このように画像を回転して印刷する場合であっても、デコーダ９３によるワード単位でのデータ読み込みが進んで、キャッシュバッファ７２内にデコーダ９３により要求されるデータがなくなると、キャッシュシステム９２は、キャッシュバッファ７２のサイズ分のデータをＤＳＣ１から新たに取得する。また、キャッシュシステム９２は、ＤＳＣ１から新たに取得したデータを、空いているキャッシュバッファ７２、あるいは、空いているキャッシュバッファ７２が無い場合には最も更新時刻が古いキャッシュバッファ７２に格納する。
【０１２７】
図１６は、画像を回転する場合におけるキャッシュメモリ７１の状態変化の一例を示す図である。図１６（Ａ）は、キャッシュメモリ７１に読み込まれるＥＸＩＦ画像データのデータ構造を示すものである。図１６（Ｂ）は、画像を回転させてデコードする場合において、ブロックを一列分のデコード処理が完了した時点でのキャッシュメモリ７１の記憶状態の一例を示す図である。図１６（Ｃ）は、画像を回転させてデコードする場合において、ブロックを２列分のデコード処理が完了した時点でのキャッシュメモリ７１の記憶状態の一例を示す図である。
【０１２８】
なお、キャッシュシステム９２は、画像のブロック行の行数ｍ以上の本数Ｐのキャッシュバッファ７２を有する。また、通常、キャッシュバッファ７２のサイズは、１つのブロックのデータ量より大きい。ちなみに、ＪＰＥＧ形式の画像データにおいて一列分のブロックのデータ量は、数十バイト、大きくても数キロバイトであるのが一般的である。
【０１２９】
そのため、画像を回転してデコードする場合において、画像の左端の一列（つまり、最初に印刷される画像に対応するブロック列）分のブロックのデコードが完了した時点では、図１６（Ｂ）に例示するように、キャッシュメモリ７１の複数のキャッシュバッファ７２には、画像の左端のブロック列のすべてのブロックのデータがキャッシュされることになる。また、画像の左端の一列分のブロックのデータとともにキャッシュされた画像の左から二列目のブロックのデータも、消されることなく、すべてキャッシュメモリ７１内に残っている。したがって、この場合では、キャッシュシステム９２がＤＳＣ１からデータをキャッシュしないでも、デコーダ９３は、左から二列目以降のブロックをデコードすることができる。
【０１３０】
また、キャッシュシステム９２は、キャッシュメモリ７１内にデコーダ９３から要求されたデータがキャッシュメモリ７１内に無い場合には、そのデータを先頭とするキャッシュバッファ７２のサイズに相当するデータ量のデータを、ＤＳＣ１からキャッシュバッファ７２へ読み込む。つまり、図１６（Ｃ）に例示するように、キャッシュシステム９２は、画像の一番上の左から二番目のブロックがデコードされる際には、そのブロックのデータの中のキャッシュしていない分のデータだけを新たにキャッシュする。なお、このキャッシュの際に、左から三番目以降のブロックのデータも一緒にキャッシュされる。
【０１３１】
ブロック列における各ブロックのデータ量が均一である理想的な場合には、ブロック行の本数と同数にキャッシュバッファ７２に格納されているデータが、同時期に順番にキャッシュアウトし、各ブロック行の後続のデータがキャッシュインすることになる。この理想状態の場合では、各データは、一度だけキャッシュインし、そのデータのデコーダ９３への読み込みが完了すると、キャッシュアウトしていく。
【０１３２】
実際の場合、ブロック列における各ブロックのデータ量が均一となることは稀であると予想されるが、その場合でも、ブロック行数以上のキャッシュバッファ７２が用意されていることにより、２つのブロック行を跨いだデータがキャッシュバッファ７２に格納されず、また、印刷上の同一走査ラインに対応する、複数のブロック行に属する複数のブロックが、複数のキャッシュバッファ７２に並行して格納された状態となる可能性が高くなる。これにより、データのキャッシュアウトおよび再度のキャッシュインの頻度が少なくて済み、キャッシュシステム９２でのキャッシュヒット率が高まる。
【０１３３】
さらに、キャッシュシステム９２は、ＤＳＣ１に対するデータリードの最小単位で、読み込みデータを指定する。このため、過去にキャッシュインしデコードに既に使用されたデータが再度キャッシュインする割合が低減する。なお、この実施の形態では説明の都合上、データリードの最小単位を１バイト単位としているが、ＳＣＳＩコマンドを使用する場合には、通常、データリードの最小単位は、５１２バイトか１０２４バイトとなる。また、データリードの最小単位は、使用するファイルシステムやファイル管理プロトコルによって異なるため、実装される方式の最小単位のデータ量を採用すればよい。
【０１３４】
以上のように、この実施の形態では、画像データの取得要求に基づいてキャッシュシステム９２が画像データをＤＳＣ１から取得した後には、その画像データをキャッシュメモリ７１から読み込んでデコーダ９３へ供給する。
【０１３５】
したがって、デコーダ９３により同じ画像データの取得要求が複数回あった場合、キャッシュシステム９２によるその画像データの取得回数は、キャッシュシステム９２への取得要求の回数より減らすことが可能となる。そして、キャッシュシステム９２による画像データのＤＳＣ１からの取得回数がキャッシュシステム９２に対する取得要求の回数より少なくなることで、印刷処理においてデコーダ９３により取得が要求された画像データを効率よくデコーダ９３へ供給することができる。つまり、キャッシュメモリ７１から画像データを読み込む場合、ＤＳＣ１から画像データを読み込む場合より、データを読み込むための時間が短いので、画像データが効率よくデコーダ９３に供給される。その結果、効率よく印刷をすることができる。
【０１３６】
また、この実施の形態では、キャッシュメモリ７１は、複数本の画像のキャッシュバッファ７２を有し、キャッシュシステム９２は、キャッシュバッファ７２の１本分のサイズ毎に画像データを取得する。したがって、キャッシュメモリ７１の記憶容量が画像データのデータ量より小さく、キャッシュメモリ７１がその画像データのすべてを記憶することができない場合であっても、キャッシュシステム９２が取得した画像データをキャッシュメモリ７１に記憶し、このキャッシュメモリ７１から読み出した画像データをデコーダ９３へ供給することができる。
【０１３７】
また、この実施の形態では、キャッシュシステム９２は、取得する画像データの先頭部分に、デコーダ９３により取得を要求された画像データが含まれるように、画像データを取得する。キャッシュシステム９２が取得する残りの画像データは、そのデコーダ９３により取得を要求された画像データに続く画像データである。印刷処理において、デコーダ９３は画像データの先頭から順番に使用する場合が多いため、キャッシュシステム９２は、キャッシュメモリ７１から、効率よく、画像データを供給することができることが多くなる。
【０１３８】
また、この実施の形態では、複数の画像のキャッシュバッファ７２のすべてに画像データが記憶されている場合には、その中で最も古い画像データを記憶するキャッシュバッファ７２に、キャッシュシステム９２が新たに取得した画像データを記憶させる。複数のキャッシュバッファ７２には、キャッシュシステム９２が取得したデータの中の最新のものを記憶させることができる。印刷処理において、デコーダ９３は画像データの先頭から順番に使用する場合が多いため、キャッシュシステム９２は、複数のキャッシュバッファ７２から、効率よく、画像データを供給することができることが多くなる。
【０１３９】
以上の実施の形態は、本発明の好適な実施の形態であるが、本発明はこれに限定されるものではなく、発明の要旨を逸脱しない範囲において種々の変形、変更が可能である。
【０１４０】
上記実施の形態では、複数のキャッシュバッファ７２は、画像のブロック行の行数ｍ以上の本数Ｐにて、キャッシュメモリ７１に固定的に設定されている。この他にもたとえば、キャッシュメモリ７１に設定する複数のキャッシュバッファ７２の本数や１本のサイズを、印刷の度に、印刷する画像データの行数や画像の回転の有無などに応じて変更するようにしてもよい。
【０１４１】
上記実施の形態では、画像を回転させる場合には、デコーダ９３はプレスキャンをしてから、デコードのためのデータの読み込みを開始している。この他にもたとえば、デコード処理の前段階において画像の画質を変更するためのＡＰＦ（Ａｕｔｏ  Ｐｉｃｔｕｒｅ  Ｆｉｎｅ）処理などの画像最適化処理をする場合には、その処理に使用するパラメータを生成するために画像データをスキャンする際に各ブロック行の先頭バイトのデータ位置をポインタバッファに格納し、デコーダ９３によるプレスキャン処理を省略するようにしてもよい。
【０１４２】
また、ほかにもたとえば、デコーダ９３は、画像を回転する場合であっても画像を回転しない場合と同様にプレスキャンをすることなく、ＥＸＩＦ画像データの先頭から順番にデータを読み込んでその画像の左端のブロック列のデコード処理を開始し、その画像の左端のブロック列のデコード処理の際に各ブロック行の左から二番目のブロックの先頭バイトのデータ位置をポインタバッファに格納し、各ブロック行の左から二番目以降のブロック列のデコード処理においてはそのポインタバッファを用いてブロック行毎の読み込み処理を行うようにしてもよい。
【０１４３】
上記実施の形態では、ＥＸＩＦ画像データをキャッシュして印刷処理をしている。この他にもたとえば、ダイレクト印刷システムは、ＪＰＥＧ画像データ、ビットマップ形式の画像データなどを印刷してもよい。たとえば横長の画像のビットマップ形式の画像データの場合には、その画像における画像の行数はピクセル行となるので、その縦方向のピクセル数と同数あるいはそれ以上の数のキャッシュバッファを用いれば、実施の形態と同様の効果を得ることができる。つまり、ビットマップ形式の画像データなどでは、１回のデータのキャッシュによって、キャリッジの複数回の走査で使用するデータを読み込むことができ、それによる印刷時間の短縮効果を得ることができる。
【０１４４】
上記実施の形態では、ＤＳＣ１のカードリーダ１６に挿入された半導体メモリ２０のＥＸＩＦ画像データの画像を回転して印刷している。この他にもたとえば、本発明は、プリンタにカードリーダを設け、このカードリーダに挿入された半導体メモリ２０のＥＸＩＦ画像データの画像を回転して印刷する場合にも適用することができる。
【０１４５】
また、上記実施の形態では、ＤＳＣ１とプリンタ２がＵＳＢにより接続されているが、その代わりに、別のインタフェースを採用してもよい。その場合、有線のインタフェースや有線の通信方式の他、ブルートゥース（商標）、赤外線通信などの無線のインタフェースや無線ＬＡＮなどの有線の通信方式を使用してもよい。また、ＤＳＣ１とプリンタ２との間のダイレクト印刷の制御コマンドやその応答などをＵＳＢマスストレージクラスを利用して行っているが、その代わりに、ＰｉｃｔＢｒｉｄｇｅ（商標）などを利用するようにしてもよい。
【０１４６】
また、上記実施の形態では、ＤＳＣ１に画像ファイル３２が格納されているが、その代わりに、携帯電話機、音楽プレーヤ、撮影機能のないストレージ装置などといった他の電子機器を使用してもよい。その場合、その電子機器には、プリンタ２と通信可能な通信手段が設けられる。
【０１４７】
また、上記実施の形態では、キャッシュシステム９２、デコーダ９３、印刷制御データ生成部９４は、ソフトウェアにより実現されているが、これらのうちの一部または全部を専用のハードウェアにより実現するようにしてもよい。
【０１４８】
なお、上記各実施の形態では、ＥＸＩＦ画像データ３２のデータ量としてファィルサイズを使用しているが、その代わりに、ＥＸＩＦ画像データ３２のＥＸＩＦヘッダを除いたデータ量としてもよい。
【産業上の利用可能性】
【０１４９】
本発明は、たとえばデジタルカメラとプリンタとを直接に接続し、そのデジタルカメラに記憶されている画像データファイルに基づく画像をプリンタで印刷するダイレクト印刷システムに利用することができる。
【図面の簡単な説明】
【０１５０】
【図１】本発明の実施の形態に係るダイレクト印刷システムを示す図である。
【図２】図１中のＤＳＣのハードウェア構成を示すブロック図である。
【図３】図２中のフラッシュメモリの記憶内容を示す図である。
【図４】図２のＤＳＣにおいて撮像時に実現される機能を示すブロック図である。
【図５】図４中のＥＸＩＦ画像データ生成部による圧縮処理の説明図である。
【図６】図１中のプリンタのハードウェア構成を示すブロック図である。
【図７】図１中のプリンタの内部機構を示す透過斜視図である。
【図８】図６中の記憶部の記憶内容を示す図である。
【図９】図１のダイレクト印刷システムに実現される機能を示すブロック図である。
【図１０】図６中のメモリに実現されるキャッシュメモリの構成を示す図である。
【図１１】図１０中の印刷指示データ解釈部の動作を示すフローチャートである。
【図１２】画像のピクセル数について説明する図である。
【図１３】図１０中のデコーダの動作を示すフローチャートである。
【図１４】図１０中のキャッシュシステムの動作を示すフローチャートである。
【図１５】画像を回転しない場合でのキャッシュメモリの状態変化の一例を示す図。
【図１６】画像を回転する場合におけるキャッシュメモリの状態変化の一例を示す図。
【符号の説明】
【０１５１】
２  プリンタ（印刷装置）、４７  印刷デバイス（印刷手段）、７１  キャッシュメモリ（バッファメモリ）、７２  キャッシュバッファ（画像バッファ）、９２  キャッシュシステム（取得手段、供給手段）、９３  デコーダ（画像処理手段）
【図１】
2006343922.tif 000003
【図２】
2006343922.tif 000004
【図３】
2006343922.tif 000005
【図４】
2006343922.tif 000006
【図５】
2006343922.tif 000007
【図６】
2006343922.tif 000008
【図７】
2006343922.tif 000009
【図８】
2006343922.tif 000010
【図９】
2006343922.tif 000011
【図１０】
2006343922.tif 000012
【図１１】
2006343922.tif 000013
【図１２】
2006343922.tif 000014
【図１３】
2006343922.tif 000015
【図１４】
2006343922.tif 000016
【図１５】
2006343922.tif 000017
【図１６】
2006343922.tif 000018