(57)【特許請求の範囲】
【請求項１】
画像を主走査方向および副走査方向にそれぞれ複数に分割してなる画像ブロックの各々を符号化したデータを前記主走査方向、前記副走査方向の順で配列した画像データを含む画像ファイルを記憶した外部の記憶媒体から、該画像ファイルに含まれる画像データをその配列順に読み出す読み出し手段と、
前記読み出し手段により読み出された画像データを一時的に記憶する記憶手段と、
前記読み出し手段に対し必要な画像データを要求するとともに、該要求に応じて前記読み出し手段から与えられる画像データに対し所定のデータ処理を行うデータ処理手段と
を備え、
前記読み出し手段は、前記記憶媒体から画像データを読み出して前記記憶手段に記憶させる読み出しモードとして、
前記画像ファイルを構成する画像データのデータ量が前記記憶手段の記憶容量を超えるとともに、前記データ処理手段が要求する画像データの順番が前記記憶媒体内のデータ配列順序と異なるときに、最初に読み出す先頭データから該先頭データが属する画像ブロックと前記副走査方向における位置が同一の画像ブロックに属する画像データのうち前記記憶媒体内のデータ配列における末尾データまでの画像データと、予め定められた既定データ長の画像データとのうち、データ長が短い方を前記記憶媒体から連続的に読み出して前記記憶手段に記憶させる可変長読み出しモードを実行する
ことを特徴とする画像データ処理装置。
【請求項２】
前記データ処理手段は、前記データ処理として、前記記憶媒体に記憶された、各画像ブロックごとの画像内容に関する情報を可変長符号化されてなる画像データに対し、該画像データを複号化する処理を行う請求項１に記載の画像データ処理装置。
【請求項３】
前記データ処理手段は、前記記憶媒体内の配列順に予め前記読み出し手段により読み出された画像データに基づいて、前記記憶媒体内のデータ配列において隣接し、かつ前記副走査方向において互いに異なる位置にある２つの画像ブロックのそれぞれに属する画像データ間の前記記憶媒体内のデータ配列における境界を表す境界情報を求めておき、
前記読み出し手段は、前記記憶媒体内のデータ配列において前記境界情報により示される境界の直前のデータを前記末尾データとする請求項２に記載の画像データ処理装置。
【請求項４】
前記読み出し手段は、前記記憶媒体から前記既定データ長の画像データを連続的に読み出す固定長読み出しモードと、前記可変長読み出しモードとを選択的に実行する請求項１ないし３のいずれかに記載の画像データ処理装置。
【請求項５】
印刷用データに基づいて、前記画像ファイルに対応する画像を記録材上に印刷する印刷手段をさらに備え、
前記データ処理手段は、前記画像データにデータ処理を施して前記印刷用データを作成して前記印刷手段に与えるとともに、前記印刷手段に与える印刷用データの順序に応じた順序で、前記読み出し手段に対し画像データを要求する請求項１ないし４のいずれかに記載の画像データ処理装置。
【請求項６】
前記印刷手段により印刷する画像の前記記録材上における方向に応じて、読み出しモードが選択される請求項５に記載の画像データ処理装置。
【請求項７】
前記画像ファイルを構成する情報のうち画像サイズに関する情報に基づいて、読み出しモードが選択される請求項４に記載の画像データ処理装置。
【請求項８】
前記画像ファイルを構成する画像データのデータ量に応じて、読み出しモードが選択される請求項４に記載の画像データ処理装置。
【請求項９】
前記画像ファイルを構成する画像データのデータ量が前記記憶手段の記憶容量以下であるときには前記固定長読み出しモードが選択される請求項８に記載の画像データ処理装置。
【請求項１０】
画像を主走査方向および副走査方向にそれぞれ複数に分割してなる画像ブロックの各々を符号化したデータを前記主走査方向、前記副走査方向の順で配列した画像データを含む画像ファイルを記憶した外部の記憶媒体から、該画像ファイルに含まれる画像データをその配列順に読み出す読み出し手段と、
前記読み出し手段により読み出された画像データを一時的に記憶する記憶手段と、
前記読み出し手段に対し必要な画像データを要求するとともに、該要求に応じて前記読み出し手段から与えられる画像データに対し所定のデータ処理を行うデータ処理手段と
を備え、
前記読み出し手段は、
前記画像ファイルを構成する画像データのデータ量が前記記憶手段の記憶容量を超えるとともに、前記データ処理手段が要求する画像データの順番が前記記憶媒体内のデータ配列順序と異なるときに、
最初に読み出す先頭データから該先頭データが属する画像ブロックと前記副走査方向における位置が同一の画像ブロックに属する画像データのうち前記記憶媒体内のデータ配列において末尾のものまでの画像データを前記記憶媒体から連続的に読み出す
ことを特徴とする画像データ処理装置。
【請求項１１】
前記データ処理手段は、前記データ処理として、前記記憶媒体に記憶された、各画像ブロックごとの画像内容に関する情報を可変長符号化されてなる画像データに対し、該画像データを複号化する処理を行う請求項１０に記載の画像データ処理装置。
【請求項１２】
前記データ処理手段は、前記記憶媒体内の配列順に予め前記読み出し手段により読み出された画像データに基づいて、前記記憶媒体内のデータ配列において隣接し、かつ前記副走査方向において互いに異なる位置にある２つの画像ブロックのそれぞれに属する画像データ間の前記記憶媒体内のデータ配列における境界を表す境界情報を求めておき、
前記読み出し手段は、前記記憶媒体内のデータ配列において前記境界情報により示される境界の直前のデータを前記末尾データとする請求項１１に記載の画像データ処理装置。
【請求項１３】
画像を主走査方向および副走査方向にそれぞれ複数に分割してなる画像ブロックの各々を符号化したデータを前記主走査方向、前記副走査方向の順で配列した画像データを含む画像ファイルを記憶した記憶媒体から、該画像ファイルに含まれる画像データをその配列順に読み出して記憶手段に記憶するとともに、該画像データに対し所定のデータ処理を行い、しかも、前記記憶媒体から画像データを読み出して前記記憶手段に記憶させる読み出しモードとして、
前記画像ファイルを構成する画像データのデータ量が前記記憶手段の記憶容量を超えるとともに、前記データ処理に必要な画像データの順番が前記記憶媒体内のデータ配列順序と異なるときに、最初に読み出す先頭データから該先頭データが属する画像ブロックと前記副走査方向における位置が同一の画像ブロックに属する画像データのうち前記記憶媒体内のデータ配列における末尾データまでの画像データと、予め定められた既定データ長の画像データとのうち、データ長が短い方を前記記憶媒体から連続的に読み出して前記記憶手段に記憶させる可変長読み出しモードを実行する
ことを特徴とする画像データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像ファイルを記憶した記憶媒体から画像データを読み出してデータ処理を行う画像データ処理装置および画像データ処理方法に関するものである。
【背景技術】
【０００２】
外部記憶媒体に記憶された画像データを読み出してデータ処理を行う画像データ処理装置においては、記憶媒体へのアクセス回数を少なくするため、記憶媒体から読み出された画像データを一時的に保存する記憶手段を設けている。そして、データ処理に必要な画像データについては、必要なときに記憶手段から読み出してデータ処理に供するようにしている。例えば、特許文献１に記載の画像印刷システムにおいては、画像の印刷行数以上の本数のキャッシュバッファを設け、画像ファイルを保存したデジタルスチルカメラから画像データを読み出してバッファに保存している。そして、データ処理に必要なデータがバッファに保存されているときにはそれを読み出してデータ処理を行う。一方、必要なデータがバッファにないときには、外部記憶媒体にアクセスして当該データを含む一定データ長のデータを読み込んでバッファに記憶させるとともに、読み出されたデータに対しデータ処理を行う。ここで、１回のアクセスで外部記憶媒体から読み込むデータのデータ長は、１本のキャッシュバッファのサイズと同じにされる。
【０００３】
【特許文献１】特開２００６−３４３９２２号公報（段落００５８、図１４）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この種の画像データ処理装置においては、上記のようなデジタルスチルカメラやメモリカードなどの外部記憶媒体から画像データを読み出す場合、装置内部でのデータの移動に比べ時間がかかるため、データ処理時間短縮のためには、これらの外部記憶媒体とのデータ送受を効率よく行うことが望まれている。しかしながら、従来の一般的な技術においては、予め決められた一定のデータ量単位でデータの読み出しを行っていたため、データの読み出しが必ずしも効率的に行えているとは言えない場合があった。
【０００５】
例えば、データ処理に必要とされるデータの順序が外部記憶媒体内のデータ配列順序と一致しているときには、必要なデータを読み出す際に記憶媒体内のデータ配列において当該データの後続データをまとめて読み出しておけば、後続データが順次データ処理に供されることとなるので記憶媒体へのアクセス回数を減らすことができる。これに対して、画像を回転させる処理を行う場合のように、データ処理に使用されるデータの順序が外部記憶媒体内のデータ配列順序と一致しない場合もある。この場合には、まとめて読み出した後続データが直ちに必要とされるとは限らないばかりか、既に読み出されたデータが重複して読み出されるなど、データの読み出しが非効率的になることがあった。このような非効率的な読み出し方法によれば、同じデータを何度も読み出すことにより処理時間が長くなったり、重複したデータによって記憶資源を浪費してしまうなどの問題があった。
【０００６】
この発明は上記課題に鑑みなされたものであり、画像ファイルを記憶した記憶媒体から画像データを読み出してデータ処理を行う画像データ処理装置および画像データ処理方法において、記憶媒体からのデータ読み出しを効率的に行い、データ処理時間の短縮を図ることのできる技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
この発明にかかる画像データ処理装置は、上記目的を達成するため、画像を主走査方向および副走査方向にそれぞれ複数に分割してなる画像ブロックの各々を符号化したデータを前記主走査方向、前記副走査方向の順で配列した画像データを含む画像ファイルを記憶した外部の記憶媒体から、該画像ファイルに含まれる画像データをその配列順に読み出す読み出し手段と、前記読み出し手段により読み出された画像データを一時的に記憶する記憶手段と、前記読み出し手段に対し必要な画像データを要求するとともに、該要求に応じて前記読み出し手段から与えられる画像データに対し所定のデータ処理を行うデータ処理手段とを備え、前記読み出し手段は、前記記憶媒体から画像データを読み出して前記記憶手段に記憶させる読み出しモードとして、前記画像ファイルを構成する画像データのデータ量が前記記憶手段の記憶容量を超え、しかも前記データ処理手段が要求する画像データの順番が前記記憶媒体内のデータ配列順序と異なるときに、最初に読み出す先頭データから該先頭データが属する画像ブロックと前記副走査方向における位置が同一の画像ブロックに属する画像データのうち前記記憶媒体内のデータ配列における末尾データまでの画像データと、予め定められた既定データ長の画像データとのうち、データ長が短い方を前記記憶媒体から連続的に読み出して前記記憶手段に記憶させる可変長読み出しモードを実行することを特徴としている。
【０００８】
また、この発明にかかる画像データ処理方法は、上記目的を達成するため、画像を主走査方向および副走査方向にそれぞれ複数に分割してなる画像ブロックの各々を符号化したデータを前記主走査方向、前記副走査方向の順で配列した画像データを含む画像ファイルを記憶した記憶媒体から、該画像ファイルに含まれる画像データをその配列順に読み出して記憶手段に記憶するとともに、該画像データに対し所定のデータ処理を行い、しかも、前記記憶媒体から画像データを読み出して前記記憶手段に記憶させる読み出しモードとして、前記画像ファイルを構成する画像データのデータ量が前記記憶手段の記憶容量を超えるとともに、前記データ処理に必要な画像データの順番が前記記憶媒体内のデータ配列順序と異なるときに、最初に読み出す先頭データから該先頭データが属する画像ブロックと前記副走査方向における位置が同一の画像ブロックに属する画像データのうち前記記憶媒体内のデータ配列における末尾データまでの画像データと、予め定められた既定データ長の画像データとのうち、データ長が短い方を前記記憶媒体から連続的に読み出して前記記憶手段に記憶させる可変長読み出しモードを実行することを特徴としている。
【０００９】
以下の説明においては、画像のうち、副走査方向における位置が同一の、つまり主走査方向に沿って一列に並んだ複数の画像ブロックからなる帯状の部分を「ブロック行」と称する一方、主走査方向における位置が同一の、つまり副走査方向に沿って一列に並んだ複数の画像ブロックからなる帯状の部分を「ブロック列」と称する。また、本明細書において「画像データが属する画像ブロック」とは、その画像データにより表される情報が画像内容に反映される画像ブロックを指す。つまり、その画像データは、当該画像ブロックの画像内容を符号化して得られるデータの全部または一部である。
【００１０】
上記のように構成された発明では、可変長読み出しモードを実行することにより１回のアクセスで記憶媒体から連続的に読み出される画像データは全て、同一のブロック行に属する画像ブロックを表すデータである。その理由は以下の通りである。
【００１１】
この発明の可変長読み出しモードでは、「最初に読み出す先頭データから該先頭データが属する画像ブロックと副走査方向における位置が同一の画像ブロックに属する画像データのうち記憶媒体内のデータ配列における末尾データまでの画像データ」と、「予め定められた既定データ長の画像データ」とのうちデータ長が短い方を、記憶媒体への１回のアクセスで連続的に読み出す。ここで、「先頭データが属する画像ブロックと副走査方向における位置が同一の画像ブロック」とは、先頭データが属する画像ブロックと同一のブロック行に属する画像ブロックを意味する。そして、画像ファイルを構成する画像データは画像ブロックごとに符号化したデータを主走査方向、副走査方向の順で配列したものであるから、同一のブロック行に属する画像ブロックの画像データは連続した状態で記憶媒体内に配列されている。したがって、ある画像ブロックに属する画像データを先頭データとしたとき、先頭データから、この画像ブロックと同一ブロック行にある画像ブロックに属する画像データの末尾までの画像データは全て当該ブロック行にある画像ブロックに属するデータとなる。
【００１２】
そして、本発明の可変長読み出しモードでは、先頭データから末尾データまで、予め定められた既定データ長の画像データのうち、データ長の短い方を１回の読み出しで連続的に読み出す。したがって、先頭データから末尾データまでのデータ長が既定データ長より短ければ末尾データまでを読み出す一方、既定データ長を超えているときには既定データ長分のみを読み出す。このため、１回の読み出しで記憶媒体から読み出されるデータ長が既定データ長を超えることはなく、しかも、１回の読み出しで読み出される画像データは全て同一ブロック行に属するものであって複数のブロック行にまたがることはない。
【００１３】
予め定められたデータ長の画像データを読み出す従来の技術においては、先頭データから末尾データまでのデータ長が短いとき、１回の読み出しでこれらのデータに続けて他のブロック行に属する画像データが読み出されることになる。ここで、当該他のブロック行に属する画像データの読み出しが既に済んでいる場合、その画像データが重複して読み出されてしまうこととなり、無用な読み出し時間および記憶資源を消費してしまうこととなる。これに対して本発明の可変長読み出しモードでは、１回の読み出しによって１つのブロック行を超えて画像データを読み出すことがないので、このような読み出し時間および記憶資源の無駄が発生せず、記憶媒体からのデータ読み出しを効率的に行うとともに、データ処理時間の短縮を図ることができる。
【００１４】
また、前記データ処理手段は、前記データ処理として、前記記憶媒体に記憶された、各画像ブロックごとの画像内容に関する情報を可変長符号化されてなる画像データに対し、該画像データを複号化する処理を行うように構成されてもよい。このような構成を有する画像データ処理装置では、１画像ブロックあるいは１ブロック行に対応する画像データのデータ長が一定でない。したがって、本発明の可変長読み出しモードを実行することの効果が非常に大きい。
【００１５】
例えば、前記データ処理手段は、前記記憶媒体内の配列順に予め前記読み出し手段により読み出された画像データに基づいて、前記記憶媒体内のデータ配列において隣接し、かつ前記副走査方向において互いに異なる位置にある２つの画像ブロックのそれぞれに属する画像データ間の前記記憶媒体内のデータ配列における境界を表す境界情報を求めておき、前記読み出し手段は、前記記憶媒体内のデータ配列において前記境界情報により示される境界の直前のデータを前記末尾データとするようにしてもよい。
【００１６】
可変長圧縮符号化された画像データでは、１画像ブロックあるいは１ブロック行に対応する画像データのデータ長が一定でないため、復号化してみなければデータ列における画像ブロックまたはブロック行の境界が正確にはわからない。そこで、予め配列順に読み出した画像データからデータ列におけるブロック行の境界を導出しておき、その情報から末尾データのデータ列内における位置を割り出すようにすれば、読み出しデータの重複を避けることができる。
【００１７】
特に、データ処理に要求される画像データの順番が記憶媒体内のデータ配列順序と異なるとき、上記のようなデータの重複が起きやすい。本発明の可変長読み出しモードは、このようなケースが想定される画像データ処理装置および方法に適用された場合に特に顕著な効果を奏するものである。
【００１８】
また、前記記憶媒体から前記既定データ長の画像データを連続的に読み出す固定長読み出しモードと、前記可変長読み出しモードとが選択的に実行されるようにしてもよい。例えばデータ処理に要求される画像データの順番が記憶媒体内のデータ配列順序と一致しているときには上記したデータの重複は発生せず、このような場合には予め定められたデータ長の画像データ読み出しを行うことで処理が簡単となるからである。
【００１９】
また、上記のように構成された画像データ処理装置においては、例えば、印刷用データに基づいて、前記画像ファイルに対応する画像を記録材上に印刷する印刷手段をさらに備え、前記データ処理手段は、前記画像データにデータ処理を施して前記印刷用データを作成して前記印刷手段に与えるとともに、前記印刷手段に与える印刷用データの順序に応じた順序で、前記読み出し手段に対し画像データを要求するようにしてもよい。このような構成の画像データ処理装置では、記録材上への画像の印刷レイアウトによってデータ処理に必要なデータの順序が変化するため、本発明の可変長読み出しモードを実行することでデータの重複を防止し効率よくデータ処理を行うことが可能となる。
【００２０】
例えば、印刷手段により印刷する画像の記録材上における方向に応じて、読み出しモードが選択されるようにすることができる。画像の印刷方向が変わると、処理に必要な画像データの順序も変化するからである。
【００２１】
また、前記画像ファイルを構成する情報のうち画像サイズに関する情報に基づいて、読み出しモードが選択されるようにしてもよい。一般に画像ファイルには、当該画像ファイルにより表現される画像のサイズ（画素数）が情報として含まれており、その情報から、画像が縦長か横長か、１ブロック行に対応するデータのおおよその長さなどを推定することができる。したがって、画像サイズに関する情報に基づき読み出しモードの選択を行うことで、画像ファイルの態様に応じた効率のよいデータ読み出しを実現することができる。
【００２２】
また、前記画像ファイルを構成する画像データのデータ量に応じて、読み出しモードが選択されるようにしてもよい。画像データのデータ量に対して記憶手段の記憶容量に余裕がある場合には、データの重複はさほど大きな問題とはならない。その一方、画像データのデータ量が記憶手段の記憶容量を超えている場合、データの重複は処理効率の向上を図る上で大きな問題である。そこで、画像データのデータ量に応じて読み出しモードが選択されるようにすることで、画像ファイルの態様に応じた読み出し処理が可能となる。
【００２３】
より具体的には、例えば、前記画像ファイルを構成する画像データのデータ量が前記記憶手段の記憶容量以下であるときには前記固定長読み出しモードが選択される一方、該データ量が前記記憶容量を超える場合には、前記画像ファイルを構成する情報のうち画像サイズに関する情報に基づいて、前記固定長読み出しモードおよび前記可変長読み出しモードのいずれか一方が選択されるようにしてもよい。上記したように、画像データのデータ量が記憶手段の記憶容量以下であるときにはデータの重複はさほど問題でないので、固定長読み出しモードが実行されてよい。一方、画像データのデータ量が記憶容量を超える場合にはデータの重複が問題となりうる。しかし、例えば必要となる画像データの順番が記憶媒体内における配列順序と同じである場合にはデータの重複は起こらないので、必ずしも可変長読み出しモードを実行しなくてもよい。そこで、例えば画像サイズに関する情報に基づいて、読み出しモードを選択することができる。
【００２４】
また、この発明にかかる画像データ処理装置に他の態様は、画像を主走査方向および副走査方向にそれぞれ複数に分割してなる画像ブロックの各々を符号化したデータを前記主走査方向、前記副走査方向の順で配列した画像データを含む画像ファイルを記憶した外部の記憶媒体から、該画像ファイルに含まれる画像データをその配列順に読み出す読み出し手段と、前記読み出し手段により読み出された画像データを一時的に記憶する記憶手段と、
前記読み出し手段に対し必要な画像データを要求するとともに、該要求に応じて前記読み出し手段から与えられる画像データに対し所定のデータ処理を行うデータ処理手段と
を備え、前記読み出し手段は、前記画像ファイルを構成する画像データのデータ量が前記記憶手段の記憶容量を超えるとともに、前記データ処理手段が要求する画像データの順番が前記記憶媒体内のデータ配列順序と異なるときに、最初に読み出す先頭データから該先頭データが属する画像ブロックと前記副走査方向における位置が同一の画像ブロックに属する画像データのうち前記記憶媒体内のデータ配列において末尾のものまでの画像データを前記記憶媒体から連続的に読み出すことを特徴としている。
【００２５】
このように構成された発明では、前記した発明と同様に、１回の読み出しで読み出される画像データはいずれも単一のブロック行に属するデータとなる。ただし、読み出しのデータ長の上限を規制していない。このようにした場合でも、二つ以上のブロック行にまたがって画像データが読み出されることはなく、データ処理に必要な画像データの順番と記憶媒体内におけるデータ配列順序とが一致しない場合でもデータの重複は回避され、効率のよいデータ読み出しを行うことができる。
【発明を実施するための最良の形態】
【００２６】
図１は本発明にかかる画像データ処理装置の一実施形態であるフォトプリンタを示す斜視図である。また、図２はフォトプリンタの内部構成の概略を示す図である。このフォトプリンタ１０では、プリンタ本体１２の内部にはプリント機構５０（図２参照）が内蔵されており、フォトプリンタ１０の全体の制御を司るコントローラ７０（図２参照）からの動作指令に応じて用紙Ｐへの印刷を実行する。そして、こうして印刷された用紙がプリンタ本体１２の前面に排紙される。
【００２７】
このプリンタ本体１２の前面には、図１に示すように、前面扉１４が開閉自在に取り付けられている。この前面扉１４はプリンタ本体１２の前面を開閉するための蓋である。そして、開状態のときには、プリント機構５０から排紙される用紙Ｐを受けるための排紙トレイとして機能する。また、プリンタ本体１２の前面に設けられた各種のメモリカードスロット１６をユーザが利用可能な状態となる。つまり、この状態でユーザは印刷対象となる画像ファイルを記憶したメモリカードＭをメモリカードスロット１６に差し込むことができる。画像ファイルデータを記憶する外部記憶媒体としてはメモリカードに限定されず、ＵＳＢメモリやディスク媒体など他のものであってもよい。また、画像を記憶したデジタルカメラや携帯電話等の電子機器を本フォトプリンタ１０にケーブルや赤外線を利用した通信によって接続し外部記憶媒体として機能させてもよい。
【００２８】
また、プリンタ本体１２の上面には操作パネル２０が設けられる一方、プリンタ本体１２の上面の奥の一辺に対してカバー３０が開閉自在に取り付けられている。このカバー３０は、プリンタ本体１２の上面を覆うことのできる大きさに成形された樹脂板であり、開状態では操作パネル２０の表面を外部に露出する（図１参照）。一方、カバー３０が閉状態に閉じられると、操作パネル２０全体を覆う。
【００２９】
この操作パネル２０には、文字や図形、記号などを表示する例えばＬＣＤディスプレイにより構成された表示部２２と、この表示部２２の周囲に配置されたボタン群２４とを備えている。ボタン群２４は、図２に示すように、電源のオンオフを行うための電源ボタン２４ａ、メインメニュー画面を呼び出すためのメニューボタン２４ｂ、操作を途中でキャンセルしたり用紙Ｐへの印刷を途中で中断したりするためのキャンセルボタン２４ｃ、用紙Ｐへの印刷実行を指示するための印刷ボタン２４ｄ、メモリカードスロット１６に挿入されたメモリカードＭに編集画像等を保存するための保存ボタン２４ｅ、表示部２２に表示された複数の選択肢の中から所望の選択肢を選択したりカーソルを移動したりするときに操作される上下左右の各矢印ボタン２４ｆ〜２４ｉ、この上下左右の各矢印ボタン２４ｆ〜
２４ｉの中央に配置され各矢印ボタン２４ｆ〜２４ｉによって選択されている選択肢に決定したことを指示するためのＯＫボタン２４ｊ、表示部２２での画面表示を切り替えるための表示切替ボタン２４ｋ、表示部２２に表示される左ガイドを選択する左ガイド選択ボタン２４ｌ、表示部２２に表示される右ガイドを選択する右ガイド選択ボタン２４ｍ、排紙トレイとしての機能を備えた前面扉１４を開く排紙トレイオープンボタン２４ｎなどで構成されている。
【００３０】
また、表示部２２の表示内容を確認するために、カバー３０には表示部２２と同じ大きさの窓３２が設けられている。つまり、カバー３０が閉状態にあるときにはユーザはこの窓３２を介して表示部２２の表示内容を確認することができる。一方、カバー３０は開状態のときには、表示部２２を図１に示すように好みの角度に調整することが可能となっている。
【００３１】
このようにカバー３０を開状態としたときには、操作パネル２０に対して斜め後方に傾斜した状態でカバー３０は保持され、用紙Ｐをプリント機構５０へ供給するためのトレイとして利用可能となっている。また、操作パネル２０の奥には、プリント機構５０の給紙口５８が設けられるとともに、ガイド幅が用紙の幅に合うように左右方向にスライド操作される一対の用紙ガイド５９が設けられている。
【００３２】
そして、給紙口５８を介して用紙Ｐがプリント機構５０に送り込まれて印刷が実行される。このプリント機構５０には、図２に示すように、キャリッジ５３が左右方向にループ状に架け渡されたタイミングベルト５１により駆動されガイド５２に沿って左右に往復動する。このキャリッジ５３には、紙端検出センサ５７が設けられ、用紙Ｐの左右端や上下端を検出する。つまり、紙端検出センサ５７は、給紙口５８にセットされた用紙に対して印刷前にキャリッジ５３が左右方向に走査したときにその用紙の左右端を検出して用紙幅の認識を可能にしたり、印刷途中で用紙の後端を検出して用紙長さの認識を可能にしたりする。
【００３３】
また、このキャリッジ５３には、シアン・マゼンタ・イエロー・ブラック等の各色のインクを個別に収容したインクカートリッジ５４が搭載されている。これらのインクカートリッジ５４はそれぞれ印刷ヘッド５５に接続されている。そして、印刷ヘッド５５はインクカートリッジ５４からのインクに圧力をかけてノズル（図示省略）から用紙Ｐに向かってインクを吐出する。この実施形態では、印刷ヘッド５５は圧電素子に電圧をかけることにより該圧電素子を変形させてインクを加圧する方式を採用しているが、発熱抵抗体（例えばヒータなど）に電圧をかけインクを加熱して発生した気泡によりインクを加圧する方式を採用してもよい。こうして印刷された用紙Ｐは搬送ローラ５６によって開状態の前面扉（排紙トレイ）１４へ送り出される。
【００３４】
また、図示を省略しているものの、プリンタ本体１２の背面にはバッテリパックを装着可能となっており、商用電源に接続しなくとも本プリンタ１０をバッテリにより動作させることが可能となっている。この点および本プリンタ１０がホストコンピュータに接続しなくても使用することができるスタンドアロンプリンタとなっている点により、本プリンタ１０は持ち運び容易でどこでも使用できるようになっている。
【００３５】
図３はコントローラの構成を示すブロック図である。コントローラ７０は、図３に示すように、メインコントローラ７１、メモリカードコントローラ７２、メモリカードドライバ７３、ファイルシステム７４、管理用バッファ７４１、画像データバッファ７４２、デコーダ７５、印刷データ生成部７６およびＬＣＤコントローラ７７などの機能ブロックを備えている。このうち、メインコントローラ７１、メモリカードドライバ７３、ファイルシステム７４、デコーダ７５および印刷データ生成部７６の各機能ブロックはソフトウェアにより実現される。すなわち、図示を省略するＣＰＵが予め定められた制御プログラムを実行することにより、これらの機能が実現される。
【００３６】
ユーザにより画像ファイルを記憶したメモリカードＭがメモリカードスロット１６に挿入されると、メモリカードコントローラ７２がこれを検知してメモリカードＭの記憶領域にアクセスし、記憶されているデータを読み出す。また、メモリカードドライバ７３は、所定のタイミングでメモリカードＭから必要なデータを取り出すべくメモリカードコントローラ７２を制御する。ファイルシステム７４は、メモリカードＭから読み出されたデータを必要に応じて管理用バッファ７４１または画像データバッファ７４２に記憶させる。また、後述するデコーダ７５からの要求に応じて、必要なデータを管理用バッファ７４１および画像データバッファ７４２から読み出したり、メモリカードＭからデータを読み出すための要求をメモリカードドライバ７３に対し出力する。
【００３７】
デコーダ７５は、メモリカードＭから読み出されたデータをデコードして画像ファイルを再構成する。このとき、メモリカードＭに記憶されている画像ファイルがデータ圧縮されたものであれば、デコーダ７５はデータを伸長して圧縮前のデータを復元する。
【００３８】
印刷データ生成部７６は、デコーダ７５によりデコードされた画像ファイルのデータに基づいて印刷制御信号を生成し、プリント機構５０に対し出力する。プリント機構５０は印刷制御信号に基づいて印刷動作を実行し、用紙上に画像ファイルに対応する画像を形成する。また、ＬＣＤコントローラ７７は、デコーダ７５によりデコードされた画像ファイルのデータに基づいてビデオ信号を生成し、表示部２２に出力する。これにより、表示部２２には画像ファイルに対応した画像が表示される。
【００３９】
そして、メインコントローラ７１は、上記した装置各部に対しその状態を監視したり必要な制御信号を与えることで、装置全体の動作を制御している。また、メインコントローラ７１は、ボタン群２４に対するユーザの操作入力を受け付けている。
【００４０】
上記のように構成されたフォトプリンタ１０では、メモリカードＭに記憶された画像ファイルが読み出され必要な加工が施されて印刷用画像データが生成され、該画像データに基づいてプリント機構が動作することによって所望の画像が得られる。しかしながら、外部記憶媒体であるメモリカードＭへのアクセスには、プリンタ内部におけるデータのやり取りよりも時間がかかるため、印刷に必要なデータを都度メモリカードＭから読み出したのでは印刷に要する時間が長くなってしまう。この問題を回避するために管理用バッファ７４１および画像データバッファ７４２が設けられている。
【００４１】
管理用バッファ７４１および画像データバッファ７４２はいずれもデータを一時的に保存するバッファメモリであり、ファイルシステム７４からの要求に応じてデータを保存したり、保存しているデータをファイルシステム７４に対して出力する。このうち管理用バッファ７４１は、メモリカードＭ内におけるディレクトリ情報やＦＡＴ（File Allocation Table）情報、画像データバッファ７４２にどの画像データが記憶されているかなどの情報を記憶する。また、画像データバッファ７４２は、画像ファイルを構成するデータとしてクラスタ単位に分割されメモリカードＭに記憶されている画像データを記憶する。印刷動作に先立ってデータをバッファに保存しておけば、印刷時間を短縮することが可能となる。
【００４２】
図４は画像データの一例を示す図である。ここでは、図４（ａ）に示すように、１つの画像ＩＭが直交する座標軸ＸおよびＹ方向にそれぞれ複数個の画像ブロックに分割されており、画像ブロック単位でその画像内容がエンコードされている場合について考える。図４（ａ）の例では、画像ＩＭは、画像ブロックをＸ方向に８個、Ｙ方向に６個それぞれ並べてなる。各画像ブロックは縦横それぞれ複数の画素からなる。なお、各画像ブロックを構成する画素の数および画像を構成する画像ブロックの数についてはこれに限定されるものではなく任意である。各画像ブロックについては、図４（ａ）のようにそれぞれその座標を付すことによって識別するものとする。例えば左上の画像ブロックは座標（１，１）によって表され、またその右隣のブロックは座標（１，２）によって表すことができる。他の各ブロックについても同様である。以下において、座標（ｍ，ｎ）で示されるブロックを示す必要があるときには、符号Ｂmnを用いて表すことにする。例えば、座標（１，１）に対応する画像ＩＭの左上の画像ブロックは符号Ｂ11により表される。図４（ａ）においては、後の説明の便宜のため、矩形を有する画像の上縁を太い直線ＴＩによって表している。
【００４３】
以下では、Ｘ方向およびＹ方向にそれぞれ一列に並んだ各画像ブロックの集まりからなる帯状の画像片をそれぞれ「ブロック行」および「ブロック列」と称する。例えば、Ｘ方向に沿って横一列に並んだ画像ブロックＢ21，Ｂ22，Ｂ23，…，Ｂ28はブロック行ＢＬ2をなしている。また、Ｙ方向に沿って縦一列に並んだ画像ブロックＢ15，Ｂ25，Ｂ35，…，Ｂ65はブロック列ＢＣ5をなしている。
【００４４】
一方、このような画像を示す画像ファイルには、図４（ｂ）のような画像データが含まれている。ここで、符号Ｄmnは座標（ｍ，ｎ）で示される画像ブロックＢmnの画像内容を表す画像データであることを示している。例えば符号Ｄ11は、座標（１，１）により表される左上の画像ブロックＢ11に対応する画像データを表している。メモリカードＭ内では、各画像ブロックＢ11〜Ｂ68ごとの画像データＤ11〜Ｄ68が、Ｄ11，Ｄ12，…，Ｄ18，Ｄ21，…，Ｄ67，Ｄ68の順に格納されている。なお、このことは、これらのデータが番号の連続するクラスタにこの順番でそのまま格納されていることを意味するのではなく、ＦＡＴファイルシステムにより指定されるクラスタチェーンの順に沿って、これらのデータが上記順序で格納されていることを意味している。同様に、以下の記述において、メモリカード内の画像データの配列順に言及するとき、それはクラスタチェーンの順に沿ったデータの順番を意味する。
【００４５】
メモリカードＭ内において、各画像ブロックに対応する画像データは、画像内における画像ブロックの配列に準じてＸ方向（主走査方向）、Ｙ方向（副走査方向）の順にエンコードされ配列されている。すなわち、画像ファイルの先頭には、１行目（一番上）のブロック行をなす各画像ブロックを表す画像データが左の画像ブロックから順に配列される。すなわち、最初に左上の画像ブロックＢ11を表す画像データＤ11が、次いでＸ方向に続く画像ブロックＢ12，Ｂ13，…を表す画像データＤ12，Ｄ13，…が配列される。１行目の最後（右端）の画像ブロックＢ18を表すデータＤ18に続いては、２行目の先頭（左端）の画像ブロックＢ21を表すデータＤ21が配列される。以下も同様にして、画像の左上端から右下端に向けて順にデータが配列されている。
【００４６】
画像データが例えばＪＰＥＧ方式などの圧縮方式によりエンコードされている場合、各ブロックＢmnを表すデータＤmnのデータ長は一定ではなく、当該画像ブロックの画像内容に応じて異なっている。すなわち、図４（ｂ）に示される画像データは可変長データである。したがって、図４（ａ）に示す画像ＩＭを１ブロック分の高さおよび８ブロック分の幅をそれぞれ持つ６つの行画像に区分したとき、例えばブロックＢ11からＢ18までの８つの画像ブロックで構成されるブロック行に対応する画像データＤ11〜Ｄ18の全データ量と、ブロックＢ21からＢ28までの８つの画像ブロックで構成されるブロック行に対応する画像データＤ21〜Ｄ28の全データ量とは、図４（ｂ）に示すように必ずしも同じではない。
【００４７】
なお、図４（ｂ）において「オフセット」とは、画像ファイルを構成する画像データが当該画像ファイルの先頭からみて何バイト目に位置するかを示すパラメータである。例えば、画像ブロックＢ11の画像内容を表す画像データＤ11の脇に付されたオフセット値「０」は、当該画像データＤ11が画像ファイルの先頭から始まっていることを示している。また、画像ブロックＢ21の画像内容を表す画像データＤ21の脇に付されたオフセット値「１４１」は、当該画像データＤ21が画像ファイルの先頭からみて１４１バイト目から始まっていることを示している。他のオフセット値もそれぞれの画像ブロックに対応する画像データが画像ファイルの何バイト目から始まっているかを表している。
【００４８】
デコーダ７５は、ファイルシステム７４に画像データを要求するとき必要なデータをこのオフセット値により指定する。すなわち、デコーダ７５はファイルシステム７４に対し、要求するデータの先頭位置および末尾位置をオフセット値により指定して要求する。ここでの指定は、データ先頭のオフセット値とバイト数または先頭のオフセット値と末尾のオフセット値により行うことができる。これを受けたファイルシステム７４は、メモリカードＭ内の画像ファイルから該当オフセット値のデータを読み出して画像データバッファ７４２に書き込む。
【００４９】
次に、このような画像データを含む画像ファイルをメモリカードＭから読み出し、当該画像ファイルに対応する画像をプリント機構５０により用紙Ｐ上に印刷する際のデータ処理の流れについて説明する。プリント機構５０による印刷は、用紙Ｐを一定の紙送りピッチで所定方向に搬送するとともに、これに直交する方向にキャリッジ５３を往復走査移動させながら、その都度所定幅のバンド画像を形成してゆくことによってなされる。この場合のバンドは少なくとも１行のブロック行から成り、バンド幅は印刷ヘッド５５に設けられたノズル列の幅に対応している。したがって、キャリッジ５３の１回の走査移動のためには、少なくとも１バンド分の印刷データ（バンドデータ）がデコーダ７５から印刷データ生成部７６を介してプリント機構５０に与えられる必要がある。
【００５０】
この実施形態では、デコーダ７５がブロック単位で画像データをデコード処理し、デコードデータを印刷データ生成部７６に与える。印刷データ生成部７６は、ブロック単位のデコードデータをブロック行単位に、さらには各ブロック行ごとのデータをバンド単位に再配列することにより、バンド単位の印刷用データ（バンドデータ）を作成し、該バンドデータを含む印刷制御信号をプリント機構５０に送信することによって、プリント機構５０により画像が印刷される。
【００５１】
（１）画像を回転させない場合
画像を回転させずに印刷する、つまりキャリッジ５３の走査移動方向が図４（ａ）のＸ軸方向と一致する場合、デコーダ７５がデコード処理のためにファイルシステム７４に要求するデータの順番と、メモリカードＭ内における画像データの配列順序とが一致する。したがって、デコーダ７５はファイルシステム７４に対し、当該画像ファイルの先頭から順にデータを要求すればよい。
【００５２】
図５は画像を回転させない場合の画像データの処理順序を示す図である。より詳しくは、図５（ａ）はデコーダ７５によるデコード処理の対象となる画像ブロックの順序を表す図であり、図５（ｂ）は画像データバッファ７４２内における画像データの格納順を示す図である。画像を回転させない場合、画像ＩＭはその上縁ＴＩから下方へ向けて印刷されるので、デコーダ７５がデコードする画像ブロックの順序、すなわちデコード順序は、図５（ａ）において矢印付きの直線で示すように、左から右、上から下に向かうＢ11，Ｂ12，Ｂ13，…の順である。したがって、デコーダ７５から要求されるデータの順序もメモリカードＭ内における配列と同じ順序、すなわちＤ11，Ｄ12，Ｄ13…の順である。
【００５３】
このとき、メモリカードＭから読み出され画像データバッファ７４２に書き込まれる画像データは、書き込まれた順に読み出されてデコーダ７５に送られデコード処理される。したがって、デコーダ７５からの要求に応じてファイルシステム７４がメモリカードＭから画像データを読み出すとき、ファイルシステム７４は要求された画像データを含む適当なデータ長の画像データをまとめて画像データバッファ７４２に書き込んでおけばよい。
【００５４】
例えば、デコード処理が開始されてデコーダ７５から最初の画像ブロックＢ11に対応する画像データＤ11を要求されたとき、ファイルシステム７４は画像データバッファ７４２にデータが保存されていないためメモリカードＭから当該データを読み出す。このとき、要求されたデータＤ11を先頭として連続するデータを適当な長さで読み出して画像データバッファ７４２に書き込んでおく。画像データバッファ７４２が予め定められたバッファサイズを有する複数本のラインバッファで構成されているとすると、読み出す画像データの長さは例えばラインバッファのバッファサイズとすることができる。バッファサイズとしては、少なくとも１画像ブロック分の画像データが完全に収まるデータ長があることが望ましい。
【００５５】
この場合、図５（ｂ）に示すように、ラインバッファ＃１にはメモリカードＭから読み出されたデータＤ11，Ｄ12，…がバッファサイズ一杯まで書き込まれる。同図の例では、ブロックＢ22に対応する画像データＤ22の途中までがラインバッファ＃１に書き込まれた場合を示している。図５（ｂ）において、符号1/2-Ｄ22は、データＤ22の全てがラインバッファ＃１に収まりきらず前半部分のみが書き込まれたことを示している。以下においても同様である。
【００５６】
このようにしておけば、デコーダ７５から引き続きデータＤ12，Ｄ13，…が順次要求されたとき、ファイルシステム７４はメモリカードＭからデータを読み出すことなく、ラインバッファ＃１に書き込まれた画像データＤ12，Ｄ13，…をデコーダ７５に送り出すことができる。なお、１行目のブロック行、つまり画像ブロックＢ11からＢ18までについてデコード処理が完了すれば、１バンド分の印刷用データが揃ったこととなるので当該バンドについて印刷動作を開始することができる。したがって、図５（ｂ）に示すように、画像データバッファ７４２のラインバッファ１本に１ブロック行以上の画像データが記憶されていれば、当該ブロック行についてのデコード処理および印刷動作は、途中でメモリカードＭへの読み出しを挟むことなく実行することが可能である。そして、少なくとも当該ブロック行の印刷が完了するまでに、次のブロック行のデータ読み出しおよびデコード処理を終了していれば、引き続き印刷動作を遅滞なく行って短時間で画像を印刷することができる。
【００５７】
デコーダ７５からデータＤ22が要求されたとき、ラインバッファ＃１にはデータＤ22の前半部分しか保存されていないため、ファイルシステム７４はメモリカードＭから続きのデータを読み出して別のラインバッファ＃２に書き込む。図において符号2/2-Ｄ22はデータＤ22の後半部分を示している。以下においても同様である。このとき、バッファサイズ一杯まで後続のデータＤ23，Ｄ24，…も書き込まれる。以下、同様にして各画像ブロックの画像データが処理されて印刷が行われる。
【００５８】
このように、画像を回転させない場合には、適当なバッファサイズを有するラインバッファを少なくとも１本設けておけばよいこととなる。そして、デコーダ７５の要求に応じてメモリカードＭにアクセスするとき、バッファサイズに相当する画像データをまとめて読み出してラインバッファに記憶させておくことにより、メモリカードＭへの読み出しアクセスの回数を減らして処理を効率よく短時間で行うことができる。なお、ここでは１ブロック行と１バンドとを同じ高さとして説明したが、実際の印刷動作では複数ブロック行を１バンドとすることが多い。このような場合には、１バンドを構成するブロック行の行数に対応する本数以上のラインバッファを設けておけば、メモリカードＭからの画像データの読み出し、デコード処理およびデコード後のバンドデータに基づく印刷動作をスムーズに行うことができる。
【００５９】
（２）画像を回転させるとき
図６は画像を回転させた場合の画像データの処理順序を示す図である。より詳しくは、図６（ａ）はデコーダ７５によるデコード処理の対象となる画像ブロックの順序を表す図であり、図６（ｂ）は画像データバッファ７４２内における画像データの格納順を示す図である。画像を例えば反時計方向に２７０度回転させて印刷する場合、キャリッジ５３の走査移動方向はＹ方向、すなわち画像データの配列順序（Ｘ方向）に直交する列方向となる。このため、印刷される画像ブロックの順番は、図６（ａ）に矢印付きの直線で示すように、ブロックＢ61，Ｂ51，Ｂ41，Ｂ31，Ｂ21，Ｂ11，Ｂ62，Ｂ52，…，Ｂ18となり、メモリカードＭ内におけるデータ配列順序に逆行する順となる。
【００６０】
この場合のデコード処理では、まず画像ブロックＢ61に対応する画像データＤ61が要求され、これに対応して画像データＤ61を含むデータがメモリカードＭから読み出されラインバッファ＃１に書き込まれる。このとき、画像を回転させない場合と同様にバッファサイズに相当するデータ長の画像データを読み出すとすると、図６（ｂ）に示すように、ラインバッファ＃１には、データＤ61およびメモリカードＭ内における後続のデータＤ62，Ｄ62，…が書き込まれる。なお、図６（ｂ）において符号φは、当該画像ファイルに属する画像データでない無効なデータを表している。
【００６１】
こうして画像データＤ61が読み出されデコード処理された後、次に必要とされるのはデータＤ51である。このデータＤ51は、先に要求されたデータＤ61よりもメモリカードＭ内の配列において前方にあるため、画像データＤ61を読み出す際にともに読み出されラインバッファ＃１に書き込まれたデータの中に含まれていることはあり得ない。したがってこのとき新たにメモリカードＭへの読み出しが必要となる。同様に、データＤ41，Ｄ31，Ｄ21，Ｄ11が要求されたとき、その都度メモリカードＭへの読み出しが発生する。その結果、ラインバッファ＃１，＃２，＃３，＃４，＃５，＃６にはそれぞれ、データＤ61，Ｄ51，Ｄ41，Ｄ31，Ｄ21，Ｄ11を先頭としバッファサイズに相当するデータ長のデータが記憶される。これらのデータに続けて読み出された後続データは、デコーダ７５からの要求に応じて順次デコーダ７５へ送り出される。
【００６２】
このようにすると、読み出されたデータの重複が発生する場合がある。例えばデータＤ51に着目すると、メモリカードＭから読み出された当該データがラインバッファ＃２に既に書き込まれているにもかかわらず、次の読み出しで再びメモリカードＭから読み出されラインバッファ＃３に書き込まれていることになる。しかも、ラインバッファ＃３に記憶されたデータＤ51は、当該画像ブロックについては既にデコード処理が済んでおり、もはや必要のないものである。同様に、図６（ｂ）において太線枠で囲まれた各データは、いずれも既に読み出されているまたは処理に使われない等の理由で本来的には読み出す必要のないデータである。
【００６３】
このような不要なデータの読み出しを行うことは、読み出しに要する時間が無駄となり処理時間の長大化を招くとともに、画像データバッファ７４２の記憶資源を浪費することとなり非効率的である。この実施形態では、以下に説明するように、図６（ｂ）において太線枠で囲まれた不要なデータの読み出しを行わないようにして処理の効率化を図り処理時間を短縮している。すなわち、この実施形態では、メモリカードスロット１６にメモリカードＭが挿入されると、コントローラ７０が以下のような動作を実行する。
【００６４】
図７はメモリカード挿入時の動作を示すフローチャートである。メモリカードスロット１６にメモリカードＭが挿入されたことが認識されると（ステップＳ１０１）、ファイルシステム７４は、メモリカードドライバ７３およびメモリカードコントローラ７２を介してメモリカードＭに記憶された画像ファイルのうちの１つ、例えば配列順において先頭のものを選択し、そのヘッダデータを読み出す（ステップＳ１０２、Ｓ１０３）。
【００６５】
画像ファイルが例えばＪＰＥＧ方式のデータ形式を有するものである場合、画像ファイルには、画像の縦・横画素数や撮像条件など画像に付随する情報を有するＥＸＩＦヘッダデータと呼ばれるデータが含まれている。この情報に基づいて、デコーダ７５は画像のサイズ（縦・横それぞれの画素数）を算出し（ステップＳ１０４）、画像の回転の要否を判断する（ステップＳ１０５）。回転の要否は次のようにして判断される。画像のサイズから当該画像の向き、つまり縦長か横長かがわかる。画像の向きが用紙Ｐの向きと同じであるときには回転不要、異なるときには回転要と判断することができる。このように、画像のサイズに関する情報から、デコーダ７５から要求される画像データの順序を予測することが可能である。また、画像の向きや１枚の用紙Ｐへの複数画像の割付など、画像レイアウトに関してユーザによる指定が別途なされている場合にはその指定を優先するようにしてもよい。すなわち、画像レイアウトに関するユーザ指示の情報からも、デコーダ７５から要求される画像データの順序を予測することが可能である。続いて、選択された画像を表示部２２に表示（プレビュー）させるためのプレビュー準備処理を実行する。
【００６６】
図８はプレビュー準備処理を示すフローチャートである。プレビュー準備処理では、まず現在処理中の画像データのオフセットの値を管理用バッファ７４１に保存する（ステップＳ２０１）。処理開始時点ではオフセットの値は０である。次いで、デコーダ７５からファイルシステム７４に対し１ワード分の画像データを要求する（ステップＳ２０２）。ここで、１ワードの長さは画像内容に応じて適宜変化するが、その指定は、例えば先頭および末尾のデータのオフセットを指定することによりなされる。
【００６７】
要求を受けたファイルシステム７４は、管理用バッファ７４１に記憶されている情報に基づき、要求された画像データの全てが既に読み出され画像データバッファ７４２に保存されているか否かを判断する（ステップＳ２０３）。要求された画像データの少なくとも一部がまだ画像データバッファ７４２に保存されていなければ、当該データを先頭としてバッファサイズに相当するデータ長のデータをメモリカードＭから読み出し、画像データバッファ７４２に書き込む（ステップＳ２０４、Ｓ２０５）。画像データバッファ７４２に空いているラインバッファがないときには、書き込み済みのラインバッファのうち一番先に書き込みが行われたラインバッファにデータを上書きする。これにより、必要な画像データが画像データバッファに記憶されていることになる。そこで、ファイルシステム７４は要求された画像データを画像データバッファ７４２から読み出しデコーダ７５に与える（ステップＳ２０６）。
【００６８】
デコーダ７５は、１画像ブロック分のデータが揃うまで、ファイルシステムへのデータの要求を繰り返す（ステップＳ２０７）。１ブロック分のデータが揃ったか否かについては、与えられたデータにブロックの末尾を示す識別コードが含まれているか否かによって判断することができる。そして、１ブロック分のデータが揃っていれば、それらのデータをデコード処理して当該画像ブロックの画素ごとの画像情報を復元する（ステップＳ２０８）。
【００６９】
上記処理を全てのブロックについて完了するまで繰り返すが（ステップＳ２１０）、１つのブロック行についての処理が完了するごとにステップＳ２０１に戻り（ステップＳ２０９）、その時点での画像データのオフセットの値を管理用バッファ７４１に保存しておく。これらの値は、図４（ａ）に示す画像の各ブロック行の左端のブロックＢ11，Ｂ21，…に対応する画像データＤ11，Ｄ21，…のオフセットの値であり、メモリカードＭ内のデータ配列における１つのブロック行と次のブロック行との境界を示している。これら各ブロック行の左端を示すオフセットの値の組を、以下では「境界情報」と称する。
【００７０】
図９は境界情報の例を示す図である。この境界情報は図４（ａ）および図４（ｂ）に例示した画像に対応している。例えば第１の（一番上の）ブロック行については、左端に位置するのはブロックＢ11であり、これに対応する画像データＤ11のオフセットは０である。また、第２のブロック行については、左端に位置するのはブロックＢ21であり、これに対応する画像データＤ21のオフセットは１４１である。以下の各ブロック行についても同様である。なお、図９では説明の便宜上各ブロック行の左端に位置するブロックの番号とそのオフセット値を組にして示しているが、境界情報としては各ブロック行の左端を表すオフセット値が重要であり、ブロック番号については特に必要でない。また、ユーザにより他の画像ファイルが選択されたときには、古い境界情報は削除され新たに選択された画像ファイルについての境界情報が管理用バッファ７４１に記憶される。
【００７１】
図７に戻って説明を続ける。上記のようにしてプレビュー準備処理（ステップＳ１０６）が終了すると、選択された画像ファイルの内容が全て画素単位の情報に復元される。そこで、こうして復元された情報に基づき画像を表示部２２にプレビュー表示する（ステップＳ１０７）。より具体的には、デコーダ７５によりデコードされたデータがＬＣＤコントローラ７７に与えられ、そのデータからＬＣＤコントローラ７７が表示用データを作成して表示部２２に与えることにより、画像ファイルに対応する画像が表示部２２に表示される。これにより、ユーザは選択された画像の内容を画面上で確認することができる。
【００７２】
この時点で、コントローラ７０は割り込み処理を受け付けを許可し（ステップＳ１０８）、装置をユーザからの新たな指示操作を受け付け可能な状態に移行させる。そして、次に説明する先行読み出し処理を実行し（ステップＳ１０９）、ユーザからの操作があるまで待機する待機状態に移行する（ステップＳ１１０）。先行読み出し処理は、割り込み許可後にユーザから与えられる指示操作に素早く応答するために、指示操作を待たずに予めデータをメモリカードＭから読み出し画像データバッファ７４２に記憶させておくための処理である。
【００７３】
図１０は先行読み出し処理を示すフローチャートである。この処理では、ここまでの処理によりメモリカードＭから既に読み出されている情報に基づき画像ファイルのデータサイズを判断する（ステップＳ３０１）。データサイズが画像データバッファ７４２の容量を超えているときには、続いて画像を回転させて処理する必要があるか否かを判断する（ステップＳ３０２）。この判断基準についてはすでに説明した通りである。
【００７４】
画像ファイルのデータサイズが画像データバッファ７４２の容量以下である場合、および、データサイズは画像データバッファ７４２の容量を超えるが回転不要な場合の処理（ステップＳ３０１〜Ｓ３０５）についてまず説明する。これらの場合には、画像データバッファ７４２が一杯になるまで、または当該画像ファイルを構成する画像データの全てが読み出されるまで、メモリカードＭからの画像データの読み出しおよび該データの画像データバッファ７４２への書き込み保存を行う。すなわち、画像データバッファ７４２へのデータの書き込み状況を判定し（ステップＳ３０３）、画像データバッファ７４２が既に一杯になっている、または当該画像ファイルの全ての画像データの読み出しが完了している場合には先行読み出し処理を終了するが、そうでない場合には、バッファサイズに対応するデータ長のデータをメモリカードＭから読み出し（ステップＳ３０４）、該データを画像データバッファ７４２に書き込む（ステップＳ３０５）、という処理を繰り返す。
【００７５】
なお、上記したプレビュー準備処理においてはメモリカードＭ内での配列順に沿った順序で画像データバッファ７４２へのデータの書き込みを行っている。したがって、その直後に行われる先行読み出し処理では、新たな画像データの読み出しが必要ない場合もあり得る。
【００７６】
これにより、画像データバッファ７４２には、図５（ｂ）に示したように、メモリカードＭ内での配列順に沿った順序で画像データが記憶されてゆく。その結果、画像ファイルのデータサイズが画像データバッファ７４２の容量以下であるときには、当該画像ファイルに含まれる全ての画像データが画像データバッファ７４２に保存されることとなる。また、データサイズは画像データバッファ７４２の容量を超えるが回転不要であるときには、画像データバッファ７４２が一杯になるまでの画像データが保存される。そのため、例えばユーザにより印刷指示操作があったときには、画像データバッファ７４２に保存されたデータを使って遅滞なく印刷を実行することができる。このように、この実施形態では、ユーザからの指示を待たずにメモリカードＭから画像データを読み出し画像データバッファ７４２に記憶させておくことで、ユーザからの指示に応じてメモリカードＭからの読み出しを開始する従来の装置に比べて、印刷に要する処理時間を大幅に短縮することができる。
【００７７】
次に、画像のデータサイズが画像データバッファ７４２の容量よりも大きく、しかも回転処理が必要である場合の処理（ステップＳ３１１〜Ｓ３１６）について説明する。このケースでは、全ての画像データを画像データバッファ７４２に記憶させておくことができず、また前記したようにデコーダ７５が要求するデータの順序とメモリカードＭ内におけるデータ配列順序とが一致しないため、メモリカードＭ内における配列順序に沿って画像データバッファ７４２に画像データを記憶させておいたとしても印刷時間の短縮にはつながらない。そこで、次のようにする。
【００７８】
まず、最初にデコード処理の対象となる画像ブロック（図６（ａ）の例では左上のブロックＢ61）について、当該画像ブロックを表す画像データの先頭から、当該画像ブロックと同一ブロック行にある画像ブロックを表す画像データの末尾までのデータ長を算出する（ステップＳ３１１）。図６（ａ）の例では、６個のブロックＢ61，Ｂ62，Ｂ63，Ｂ64，Ｂ65，Ｂ66が１つのブロック行をなしている（図４（ａ）参照）。したがって、これらに対応するデータＤ61〜Ｄ68のデータ長の合計が求める値である。ここで、先に求めた境界情報（図９）によって、画像ファイル先頭からみたデータＤ61のオフセットは既知である。また、データＤ68の末尾は、画像ファイルの全データサイズから既知である。つまり、画像ファイル内における当該ブロック行の画像データの先頭位置および末尾位置は既知であるので、これらの情報から当該ブロック行の画像データのデータ長を算出することが可能である。他のブロック行についても、境界情報によってデータの先頭および末尾の位置が表されているので、データ長を算出することができる。
【００７９】
そして、算出されたデータ長とラインバッファ１本のバッファサイズとを比較し（ステップＳ３１２）、データ長がバッファサイズ以上であれば、先頭データＤ61から順にバッファサイズに対応するデータ長のデータをメモリカードＭから読み出して画像データバッファ７４２に保存しておく（ステップＳ３１３、Ｓ３１４）。一方、算出されたデータ長がバッファサイズよりも小さいときには、先頭データＤ61から、算出されたデータ長のデータのみをメモリカードＭから読み出し（ステップＳ３１４）、画像データバッファ７４２に保存する（ステップＳ３１５）。上記の処理（ステップＳ３１１〜Ｓ３１５）を全ブロック行について繰り返し実行する（ステップＳ３１６）。
【００８０】
図６（ｂ）の例では、データＤ61〜Ｄ68の合計データ長がバッファサイズよりも小さいため、該合計データ長のデータのみがメモリカードＭから読み出されてラインバッファ＃１に書き込まれる。このため、同図において符号φで示す無効データが読み出されることはない。また、画像ブロックＢ51から始まるブロック行については、当該ブロック行に含まれる画像ブロックＢ51〜Ｂ58を表す画像データＤ51〜Ｄ58の合計データ長がバッファサイズより大きいため、バッファサイズ分の画像データ（Ｄ51〜1/2-Ｄ58）のみがメモリカードＭから読み出されてラインバッファ＃２に記憶される。また、画像ブロックＢ41から始まるブロック行については、当該ブロック行に含まれる画像ブロックＢ41〜Ｂ48を表す画像データＤ41〜Ｄ48の合計データ長がバッファサイズ以下であるため、合計データ長分のデータのみが読み出されてラインバッファ＃３に記憶される。
【００８１】
このようにすることで、読み出す必要のないデータ、つまり図６（ｂ）において太線枠で囲んだデータについては読み出しが省かれる。その結果、この実施形態では、従来無用なデータの読み出しに要していた時間が短縮されて、全体の処理時間を短縮することが可能となる。また、画像データバッファ７４２において同じデータが重複して保存されることがないので、記憶資源の有効利用を図ることが可能である。例えば、ラインバッファのバッファサイズを１本ごとに個別に設定可能とし、各ブロック行ごとの合計データ長と一致させるようにすれば、バッファ容量をより有効に活用することが可能となる。
【００８２】
また、ユーザからの指示を待つことなく、しかも画像を回転させることを前提としてその処理に適した態様でメモリカードＭから画像データを読み出し画像データバッファ７４２に予め記憶させているので、ユーザからの指示に応じてメモリカードＭからの読み出しを開始する従来の装置に比べて、印刷に要する処理時間を大幅に短縮することができる。
【００８３】
なお、この実施形態では、１ブロック行の先頭から末尾までの合計データ長がバッファサイズを超えているとき、メモリカードＭから読み出す画像データのデータ長をバッファサイズに制限している。こうすることにより、画像データバッファ７４２の記憶容量を多数のブロック行に割り当てることができるので、画像データバッファ７４２の記憶容量をあまり大きくしなくても済む。これに代えて、データ長を制限せずブロック行の末尾まで読み出すようにしてもよい。このようにすれば、上記したようにデータの重複が回避されることに加えて、１回の読み出しで１ブロック行分のデータを全て読み出して画像データバッファ７４２に保存しておくことができるので、メモリカードＭへのアクセス回数を少なくして以後のデータ処理における処理時間を短縮することができる。ただし、１ブロック行分のデータを全て記憶するためには画像データバッファ７４２に大きな記憶容量が必要となるので、例えばバッファの記憶容量に十分な余裕がある場合にこの方式を適用するのが好ましい。
【００８４】
また、デコーダ７５はオフセットの値を指定することによって、画像ファイルに含まれる画像データのうちどこからどこまでを読み出すかを指定するが、指定された画像データのうち先頭のデータが１つのブロック行を表す一連の画像データの先頭であるとは限らない。つまり、１つのブロック行を表す一連の画像データの途中からデータの読み出しが開始される場合がある。このような場合であっても、読み出し開始位置のデータから当該ブロック行を表す画像データの末尾までを読み出し、読み出したデータが次のブロック行にまたがることのないようにすることで、データを重複して読み出すことが回避される。
【００８５】
このように、この実施形態の先行読み出し処理では、プレビュー準備処理の結果に基づいて画像ファイルのデータサイズや回転の有無を判断し、その判断に基づいた態様で、しかもユーザからの指示操作を待たずに、メモリカードＭからの画像データの読み出しおよび画像データバッファ７４２への書き込み保存を行うようにしている。そのため、ユーザからの指示操作があったときには、それに応答して遅滞なく次の処理を実行することができる。
【００８６】
図１１はユーザの指示操作に基づく割り込み処理を示すフローチャートである。割り込みが許可された状態で、ボタン群２４を介してユーザから何らかの指示操作が与えられると、図１１に示す割り込み処理が実行される。割り込み処理では、当該割り込み処理が了するまで新たな割り込みは禁止される（ステップＳ４０１）。なお、図７に示すように、先行読み出し処理の直前に割り込みの受付を許可しているので、前記した先行読み出し処理の実行中であっても割り込みは受け付けられる。このようにする理由については後で説明する。
【００８７】
次いで、割り込みの種類を判別する（ステップＳ４０２）。ユーザからの指示操作が別の画像を選択するものであったときには、図７の「Ａ」にジャンプし、新たに選択された画像に対して、前記したプレビュー表示等の処理を行う。また、ユーザからの指示操作が画像の印刷方向や割付などのレイアウト変更に関するものであるときには、図７の「Ｂ」にジャンプし、前記した先行読み出し処理を実行する。このとき、画像の回転の有無については、新たに指定されたレイアウトに基づいて判断される。
【００８８】
ユーザの指示操作が印刷指示であった場合には次のような動作が実行される。まず、印刷の対象として指示された画像が単一であるか複数種であるかを判断する（ステップＳ４０３）。ここでは、印刷すべき画像の枚数ではなくその種類を判断する。したがって、同じ画像を複数部印刷する場合は、画像の種類としては単一とする。画像の種類が複数であった場合には続いてその中に、先行読み出し処理の済んでいる、あるいは進行している画像が含まれているか否かを判断する（ステップＳ４０４）。先行読み出し処理の済んでいる、あるいは進行している画像がある場合には、その画像を印刷処理対象として選択し（ステップＳ４０５）、当該画像について印刷処理を実行する（ステップＳ４０７）。一方、印刷すべき画像が単一であるときにはその画像を、また複数種であっても先行読み出し処理の済んでいるあるいは進行している画像がないときには任意の１つの画像（例えばユーザが最初に選択したもの、メモリカードＭ内の画像ファイルの配列において最初のものなど）を印刷処理対象として選択し（ステップＳ４０６）、印刷処理を実行する。
【００８９】
図１２は印刷処理を示すフローチャートである。印刷処理の概略の流れは、デコーダ７５がファイルシステム７４から画像データを受け取って画像ブロックごとにデコード処理し、１バンド分のデコード処理が終了すると当該バンドについてプリント機構５０が用紙Ｐ上に当該バンドの画像を印刷する、これを全バンドについて繰り返す、というものである。より詳しく説明する。
【００９０】
デコーダ７５はキャリッジ５３の走査方向において最初の画像ブロックからデコード処理を開始し、キャリッジ走査方向、用紙送り方向の順で処理対象となる画像ブロックを移動させてゆく。具体的には、ファイルシステム７４に対し最初にデコード処理すべき画像ブロックの先頭から１ワード分の画像データを要求する（ステップＳ５０１）。ファイルシステム７４は、当該データが既に画像データバッファ７４２に記憶されているか否かを判断する（ステップＳ５０２）。データが画像データバッファ７４２にあればそれを読み出してデコーダ７５に与える一方、データがなければメモリカードＭにアクセスして必要なデータを読み出す（ステップＳ５０３）。ここでのデータ読み出しは先に説明したものと同じにすることができる。すなわち、画像を回転させて印刷する場合には、図１０のステップＳ３１１〜Ｓ３１６の処理を適用することができる。また、画像を回転させない場合には、同図のステップＳ３０３〜Ｓ３０５を適用することができる。
【００９１】
デコーダ７５は１ブロック分の画像データが揃うまでファイルシステム７４へのデータ要求を繰り返し（ステップＳ５０４）、データが揃えば１ブロック分の画像データをデコード処理し（ステップＳ５０５）、印刷データ生成部７６に与える。そして、１バンド分のデコード処理が完了すると（ステップＳ５０６）、印刷データ生成部７６は１バンド分の印刷用データをプリント機構５０に与え、プリント機構５０が当該バンドの画像を印刷する（ステップＳ５０７）。上記処理を全バンドについて繰り返し行うことで（ステップＳ５０８）、１つの画像の全体を印刷することができる。
【００９２】
図１１に戻って割り込み処理の説明を続ける。上記のようにして１つの画像の印刷を完了すると（ステップＳ４０７）、印刷すべき次の画像があるかどうかを判断する（ステップＳ４０８）。次の画像がある場合には、それらのうち一を次の印刷処理対象として設定し（ステップＳ４０６）、上記した印刷処理を繰り返し実行する。一方、次の画像がない場合には、図７の「Ａ」にジャンプし、新たに１つの画像ファイルを選択し当該画像ファイルに対する処理を適宜行う。
【００９３】
次に、先行読み出し処理の実行中においてもユーザ指示操作に基づく割り込み処理を受け付けている理由について説明する。この実施形態における先行読み出し処理では、ユーザからの操作指示を待たずにメモリーカードＭから画像データを読み出し画像データバッファ７４２に書き込み記憶する、という処理を行っている。このときデータ読み出しの順序は、画像ファイルのデータサイズや画像回転の有無などに基づいて判断される（図１０）。この判断は、画像ファイルの現状に基づき「最終的にユーザに選択される可能性が高い」と予想される態様（例えば回転の有無）に応じた読み出し順序が適用されるように構成されているが、ユーザがこれと異なる態様を選択する場合も起こり得る。ユーザが自ら処理の態様を選択指示しているのに、装置がこれに反する処理の実行を継続することは無意味であるばかりか、ユーザ指示への応答が遅れてしまうことになり不都合である。
【００９４】
そこで、この実施形態では、ユーザの指示に先行して、指示される可能性の高い態様に合わせた先行読み出し処理を行いつつも、ユーザから指示があったときには実行中の処理を中断して直ちにユーザ指示に対応した動作を行うことができるようにするために、先行読み出し処理の実行中にもユーザ操作に起因する割り込み入力を受け付けるようにしている。
【００９５】
例えば、先行読み出し処理において「回転あり」と判断し（図１０のステップＳ３０２）、図６（ｂ）に示すような順序でラインバッファ＃１，＃２，…へのデータ書き込みを行っている途中でユーザから操作指示があったときには、その時点で先行読み出し処理が中断されて割り込み処理（図１１）が実行される。このとき、操作指示が選択画像やレイアウトの変更に関するものであれば、変更された後の状態に基づく態様で以後の処理がなされる。例えばユーザが「画像を回転させない」旨の操作指示をした場合には、処理は図１１のステップＳ４０２から図７の「Ｂ」へ進み、「回転なし」の態様に応じた先行読み出し処理（図７のステップＳ１０９）が実行されて、各ラインバッファには図５（ｂ）に示す順序で画像データが上書きされてゆく。また例えば、ユーザが他の画像ファイルを選択した場合には、処理は図１１のステップＳ４０２から図７の「Ａ」へ進み、新たに選択された画像ファイルについて一連の処理を開始する。
【００９６】
このように、この実施形態では、ユーザ指示に先行して画像データを読み出し画像データバッファ７４２に書き込んでゆくが、データ読み出し順序を判断するための新たな材料がユーザ指示によって与えられると、その都度データ読み出し順序を再判断しその結果に応じた順序でデータを読み出し画像データバッファ７４２に記憶させてゆく。そのため、印刷すべき画像やそのレイアウトがユーザにより確認され印刷指示がなされた時点で、大抵の場合画像データバッファ７４２への画像データの書き込みが済んでおり直ちに印刷動作を実行することができる。
【００９７】
別画像が選択されたりレイアウトが変更された場合、先行読み出し処理によって読み出された画像データは使用されず無駄となってしまうが、このことがユーザにとっての便宜を損なうものではない。先行読み出し処理はユーザの指示が与えられるまでのいわば待機時間に実行されるものであり、ユーザから何らかの指示があれば直ちに先行読み出し処理は中断され指示に応じた処理が行われるからである。
【００９８】
また、ユーザの操作指示が印刷指示であった場合には、既に読み出され画像データバッファ７４２に書き込まれたデータがあるか否かを判断し、データがある場合にはそれを優先的に使用して印刷を行うようにしているので（図１１のステップＳ４０４，Ｓ４０５）、先行読み出し処理によって読み出されたデータが無駄にならない。また、印刷指示があった時点で既に画像データの読み出しが進んでいるため、指示を受けてから読み出しを開始する従来の技術に比べ、指示に応じた画像の印刷をより素早く行うことが可能である。
【００９９】
以上のように、この実施形態では、メモリカードスロット１６にメモリカードＭが挿入されたり、ユーザにより選択画像の変更指示やレイアウトの変更指示などの操作がなされると、ユーザからの印刷指示を待たずにメモリカードＭからのデータ読み出しを開始し、読み出した画像データを画像データバッファ７４２に記憶しておく。このとき、画像ファイルの内容から、またはユーザの指示内容から予測されるデコーダ７５からのデータ要求の順序に応じて、メモリカードＭからの読み出し順序およびラインバッファへの書き込み順序が決定されるので、画像データバッファ７４２には最終的に選択される可能性が高いと考えられる態様に適した順序でデータが格納される。このため、上記操作の後にユーザから印刷指示があったときには、画像データバッファ７４２に記憶されたデータを用いて直ちに印刷動作を実行開始することができ、印刷に要する処理時間を短縮することができる。
【０１００】
また、例えば画像を回転させる処理を行う場合のように、メモリカードＭ内における画像データの配列順序とは異なる順序で画像データを読み出す必要があるときには、１回の読み出しアクセスでは２つ以上のブロック行にまたがるデータの読み出しを行わないようにしている。より具体的には、読み出しが開始される先頭データから、これと同一ブロック行に属する画像データの末尾のもの（末尾データ）までのデータ長がラインバッファのバッファサイズよりも短いとき、先頭データから末尾データまでのみの読み出しを行う。こうすることで同一データが重複してメモリカードＭから読み出され画像データバッファ７４２に記憶されることがなくなるので、重複データの読み出しに要する時間の無駄をなくし、画像データバッファ７４２の記憶容量を効率よく利用することができる。
【０１０１】
なお、画像データが可変長データである場合、１つのブロック行を表す画像データのデータ長が一定でないため、メモリカードＭ内の画像データ列において各ブロック行ごとの区切りを見出すことが難しいが、この実施形態では、メモリカードＭに記憶された画像内容をユーザに確認させるプレビュー表示を行うための処理によって得られた、各ブロック行の区切りを示す境界情報を保存しておき、これに基づいてブロック行の末尾を識別するようにしているので、簡単かつ確実に、データの読み出しを当該ブロック行の末尾データで止めることが可能となっている。
【０１０２】
また、境界情報の導出および該境界情報に基づくデータの先行読み出しを、ユーザの印刷指示を待たずに実行開始しているので、印刷指示があった場合には速やかに印刷用データの作成および印刷動作を行うことができる。この場合、メモリカードＭからのデータ読み出しおよび画像データバッファ７４２への書き込みが印刷指示よりも前に完了していれば直ちに印刷用データの作成を開始することができるのは言うまでもないが、印刷指示の時点で少なくとも境界情報が求められていれば処理時間の短縮効果を得ることができる。その理由は以下の通りである。
【０１０３】
従来の技術においては、印刷指示を受けてから境界情報を導出するための処理を行っていた。このため、画像の回転が必要であるとき、印刷指示を受けるとまずメモリカード内での配列順に沿ってデータを読み出して境界情報を作成し、それに基づく順序で改めて画像データを読み出し印刷用データを作成する、という手順になっていた。これに対し、印刷指示を待たずに境界情報を求めておけば、印刷指示を受けたときにはメモリカード内での配列順に沿ったデータ読み出しおよび境界情報の作成を省略することができるので、従来技術に比べ処理に要する時間を短縮することができる。
【０１０４】
なお、上記実施形態では、「画像ブロック」単位で処理を行うことについて説明してきたが、この「画像ブロック」はＪＰＥＧ方式における「ＭＣＵ（Minimum Coded Unit）」の１個または複数個に対応している。すなわち、扱われる画像ファイルがＪＰＥＧ方式のものであるとき、この実施形態における画像ブロックは、１個またはＸ方向に連続する複数個のＭＣＵと同等のものと考えることができる。
【０１０５】
図１３は複数個のＭＣＵからなる画像ブロックを示す図である。ＪＰＥＧ方式でエンコードされた画像ＩＭは、図の左上から右および下の順にＭＣＵ単位で符号化されている。また、１つのバンドはＭＣＵ４個分の幅を有している。このような場合、Ｘ方向に連続する４個のＭＣＵ（ＭＣＵ１，ＭＣＵ２，ＭＣＵ３およびＭＣＵ４）を１つの画像ブロックＢ11に対応させることができる。したがって、画像ブロックＢ11を表す画像データＤ11は、ＭＣＵ１，ＭＣＵ２，ＭＣＵ３およびＭＣＵ４の４個のＭＣＵを個別にエンコードして得られた画像データの全てを含んでいる。同様に、他のブロックＢ12，Ｂ21，Ｂ31等も、それぞれＸ方向に連続する４個のＭＣＵに対応させることができる。
【０１０６】
このような画像を２７０度回転させて印刷するとき、デコード処理はキャリッジ走査方向すなわちＹ方向に沿ってブロックＢ11，Ｂ21，Ｂ31，…の順で実行される。また、各ブロックのデコード処理はＭＣＵ単位でＸ方向の配列順に行われ、例えば画像ブロックＢ11については、ＭＣＵ１，ＭＣＵ２，ＭＣＵ３およびＭＣＵ４の順にデコードされる。したがって、図９に示す「境界情報」は、各行左端のＭＣＵそれぞれのオフセットに相当していることとなる。
【０１０７】
以上説明した実施形態においては、メモリカードコントローラ７２、メモリカードドライバ７３およびファイルシステム７４が一体として本発明の「読み出し手段」として機能している。また、デコーダ７５および印刷データ生成部７６がいずれも本発明の「データ処理手段」として機能する一方、画像データバッファ７４２が本発明の「記憶手段」として機能している。また、メモリカードＭが「記憶媒体」に相当している。また、プリント機構５０が本発明の「印刷手段」に相当している。また、本実施形態において、図１０のステップＳ３１１〜Ｓ３１６の処理が、本発明の「可変長読み出し処理モード」に相当する一方、同図のステップＳ３０３〜Ｓ３０５が本発明の「固定長読み出しモード」に相当している。
【０１０８】
また、上記実施形態の説明で用いた画像ファイル（図４）においては、画像のエンコード方向のうちＸ方向（横方向、行方向）が本発明の「主走査方向」に相当する一方、Ｙ方向（縦方向、列方向）が本発明の「副走査方向」に相当している。
【０１０９】
なお、本発明は上記した実施形態に限定されるものではなく、その趣旨を逸脱しない限りにおいて上述したもの以外に種々の変更を行うことが可能である。例えば、上記実施形態では、メモリカードＭに記憶されたＪＰＥＧ画像ファイルを読み出してデータ処理を行っているが、画像ファイルのデータ形式についてＪＰＥＧ方式に限らず、ＴＩＦＦ（Tagged Image File Format）方式やビットマップ方式などの画像ファイルを扱う装置に対しても本発明を適用することができる。特に、画像内容が可変長データとして表されるデータ形式である場合に、本発明の効果が顕著である。
【０１１０】
また、上記実施形態では、選択された１つの画像ファイルについての「境界情報」を、コントローラ７０に設けた管理用バッファ７４１に記憶するようにしている。これに代えて、管理用バッファ７１４の容量を増大させて複数の画像ファイルについての境界情報を記憶させるようにしてもよい。このようにすれば、例えば境界情報が取得された画像ファイルがいったん選択対象から外された後に再び選択対象とされたような場合に、改めて境界情報を取得する必要がなくなるので、処理時間短縮の観点からは好ましい。この場合、当該画像ファイルが記憶されたメモリカードＭがメモリカードスロット１６から取り出されたとき、あるいはさらに他のメモリカードが装着されたときに当該画像ファイルに関する境界情報を削除するようにすればよい。
【０１１１】
また、上記各実施形態は装置本体に対し挿抜自在のメモリカードに保存された画像ファイルを読み出すように構成されているが、本発明にいう「記憶媒体」としては、このようなカード状のもの以外にも種々のものを使用可能である。例えば、磁気ディスクを有する記憶媒体やスティック状の記憶媒体であってもよい。さらには、デジタルカメラや携帯電話など、撮像された画像ファイルを記憶する機能を有する機器であって、例えばケーブルや無線・赤外線通信等の通信手段により画像ファイルを読み出すことのできるものについても、本発明の「記憶媒体」として使用することが可能である。
【０１１２】
また、上記実施形態におけるプリント機構５０はインクジェット方式のプリンタであるが、例えば電子写真方式のプリンタであってもよい。また、上記実施形態における表示部２２はＬＣＤディスプレイによって画像を表示するものであるが、ＥＬ（エレクトロルミネセンス素子）ディスプレイ等他の表示方式で画像を表示するものであってもよい。
【０１１３】
また、上記実施形態は、画像ファイルに対応する画像を表示するための表示機能および該画像を印刷する印刷機能を有するフォトプリンタに本発明を適用したものであるが、本発明の適用対象は上記したフォトプリンタに限定されない。例えば、表示機能または印刷機能のいずれか一方のみを備える機器に対しても、本発明を適用することが可能である。さらに、このような表示・印刷機能を有するものに限らず、記憶媒体に記憶された画像ファイルを読み出してデータ処理を行う装置およびデータ処理方法全般に対して、本発明を適用することが可能である。
【図面の簡単な説明】
【０１１４】
【図１】本発明の画像表示装置の第１実施形態であるフォトプリンタを示す斜視図。
【図２】フォトプリンタの内部構成の概略を示す図。
【図３】コントローラの構成を示すブロック図。
【図４】画像データの一例を示す図。
【図５】画像を回転させない場合の画像データの処理順序を示す図。
【図６】画像を回転させた場合の画像データの処理順序を示す図。
【図７】メモリカード挿入時の動作を示すフローチャート。
【図８】プレビュー準備処理を示すフローチャート。
【図９】境界情報の例を示す図。
【図１０】先行読み出し処理を示すフローチャート。
【図１１】ユーザの指示操作に基づく割り込み処理を示すフローチャート。
【図１２】印刷処理を示すフローチャート。
【図１３】複数個のＭＣＵからなる画像ブロックを示す図。
【符号の説明】
【０１１５】
１６…メモリカードスロット、  ２２…表示部、  ５０…プリント機構（印刷手段）、  ７０…コントローラ、  ７２…メモリカードコントローラ（読み出し手段）、  ７３…メモリカードドライバ（読み出し手段）、  ７４…ファイルシステム（読み出し手段）、  ７５…デコーダ（データ処理手段）、  ７６…印刷データ生成部（データ処理手段）、  ７７…ＬＣＤコントローラ、  ７４１…管理用バッファ（記憶手段）、  Ｍ…メモリカード（記憶媒体）、  Ｘ…主走査方向、  Ｙ…副走査方向
【図１】
0004882926.tif 000002
【図２】
0004882926.tif 000003
【図３】
0004882926.tif 000004
【図４】
0004882926.tif 000005
【図５】
0004882926.tif 000006
【図６】
0004882926.tif 000007
【図７】
0004882926.tif 000008
【図８】
0004882926.tif 000009
【図９】
0004882926.tif 000010
【図１０】
0004882926.tif 000011
【図１１】
0004882926.tif 000012
【図１２】
0004882926.tif 000013
【図１３】
0004882926.tif 000014