(57)【要約】【課題】印刷実行部に印刷コマンドを出力する際に、印刷実行部による印刷処理速度を向上する。【解決手段】  印刷実行部に出力すべき対象印刷コマンドを含む少なくとも１種の印刷コマンドを生成し、対象印刷コマンドを印刷実行部に出力する。第１種印刷コマンドを生成する第１生成機能は、対象画像データを用いて、画像補間を含む第１サイズ変更処理を実行することによって、第１種画像データを含む第１種印刷コマンドを生成する機能を含む。第２種印刷コマンドを生成する第２生成機能は、対象画像データを用いて、画像補間を含まない第２サイズ変更処理を実行することによって、対象画像を表すサイズ変更済画像データを生成する画像サイズ変更機能と、サイズ変更済画像データをランレングス圧縮することによって、第２種画像データを含む第２種印刷コマンドを生成する圧縮機能と、を含む。【選択図】  図４
2020052895.tif 000002
【特許請求の範囲】
【請求項１】
印刷実行部に画像を印刷させるためのコンピュータプログラムであって、
対象画像の対象画像データを取得する第１取得機能と、
第１種印刷コマンドと第２種印刷コマンドとを含む複数種類の印刷コマンドのうちの少なくとも１種の印刷コマンドであって、前記印刷実行部に出力すべき印刷コマンドとして選択される対象印刷コマンドを含む前記少なくとも１種の印刷コマンドを生成するコマンド生成機能と、
前記対象印刷コマンドを前記印刷実行部に出力する出力機能と、
を、コンピュータに実現させ、
前記コマンド生成機能によって実現される前記第１種印刷コマンドを生成する第１生成機能は、前記対象画像データを用いて、画像補間を含む第１サイズ変更処理を実行することによって、第１種画像データを含む前記第１種印刷コマンドを生成する機能を含み、
前記コマンド生成機能によって実現される前記第２種印刷コマンドを生成する第２生成機能は、
前記対象画像データを用いて、画像補間を含まない第２サイズ変更処理を実行することによって、前記対象画像を表すサイズ変更済画像データを生成する画像サイズ変更機能と、
前記サイズ変更済画像データをランレングス圧縮することによって、第２種画像データを含む前記第２種印刷コマンドを生成する圧縮機能と、
を含む、
コンピュータプログラム。
【請求項２】
請求項１に記載のコンピュータプログラムであって、
前記印刷実行部から、前記印刷実行部の能力に関する情報である能力情報を取得する第２取得機能と、
前記能力情報を用いて、前記複数種類の印刷コマンドから前記対象印刷コマンドを選択する選択機能と、
をコンピュータに実現させる、コンピュータプログラム。
【請求項３】
請求項２に記載のコンピュータプログラムであって、
前記能力情報は、前記印刷実行部が受け付ける画像データの解像度である入力解像度に関する情報を含み、
前記選択機能は、前記対象画像データがビットマップデータであり、前記対象画像データのピクセル数と相関を有するサイズが前記入力解像度に基づく入力サイズよりも小さいことを含む条件が満たされる場合に、前記対象印刷コマンドとして前記第２種印刷コマンドを選択し、
前記画像サイズ変更機能は、前記対象画像データのサイズを前記入力サイズに変更する拡大処理を前記第２サイズ変更処理として実行することによって、前記サイズ変更済画像データを生成する、
コンピュータプログラム。
【請求項４】
請求項１から３のいずれかに記載のコンピュータプログラムであって、
前記第２生成機能は、前記対象画像データがドキュメントデータである場合に、前記対象画像データを、非圧縮のビットマップデータと可逆圧縮されたビットマップデータとのいずれかである対象ビットマップデータに変換する変換機能を含み、
前記圧縮機能は、前記対象ビットマップデータと、前記対象ビットマップデータに前記第２サイズ変更処理を実行して得られる画像データと、のいずれかをランレングス圧縮することによって、前記第２種印刷コマンドに含まれる前記第２種画像データを生成する、
コンピュータプログラム。
【請求項５】
請求項１から４のいずれかに記載のコンピュータプログラムであって、
前記画像サイズ変更機能は、前記対象画像データがビットマップデータであり、前記対象画像データのピクセル数と相関を有するサイズが基準サイズよりも大きい場合に、前記対象画像データのサイズを前記基準サイズ以下のサイズに変更する縮小処理と、前記縮小処理によって得られる画像データのサイズを前記印刷実行部が受け付ける画像データの解像度である入力解像度に基づく入力サイズに変更する拡大処理とを、前記第２サイズ変更処理として実行することによって、前記サイズ変更済画像データを生成する、
コンピュータプログラム。
【請求項６】
請求項１から５のいずれかに記載のコンピュータプログラムであって、
前記対象画像を前記印刷実行部に印刷させる指示を受け付ける受付機能と、
前記指示が受け付けられる前に、前記対象画像を表示部に表示させる表示機能と、
を、コンピュータに実現させ、
前記コマンド生成機能は、前記指示が受け付けられる前に、前記第２種印刷コマンドの生成を開始する、
コンピュータプログラム。
【請求項７】
請求項６に記載のコンピュータプログラムであって、
前記第２種印刷コマンドのうちの前記指示が受け付けられる前に生成済の部分を含む特定部分のデータサイズが基準データサイズを超える場合に、前記出力機能に前記第１種印刷コマンドを出力させる出力設定機能を、コンピュータに実現させる、コンピュータプログラム。
【請求項８】
請求項１から７のいずれかに記載のコンピュータプログラムであって、
前記第２生成機能は、前記コンピュータが複数の演算部を備える場合に、前記第２種印刷コマンドを生成する処理に含まれる複数の処理を、前記複数の演算部に並列して実行させる並列処理機能を含む、
コンピュータプログラム。
【請求項９】
請求項８に記載のコンピュータプログラムであって、
前記並列処理機能は、前記第２種画像データに含まれる複数のバンドデータであって前記対象画像に含まれる複数のバンド画像に対応する前記複数のバンドデータのうちの少なくとも一部の複数のバンドデータを生成する処理を、前記複数の演算部に並列して実行させ、
前記複数のバンド画像のうちの前記対象画像の最先に印刷されるべき先端を含む先端バンド画像のサイズは、他の１以上のバンド画像のそれぞれのサイズのうちの最大サイズよりも、小さく、
前記出力機能は、前記先端バンド画像のバンドデータである先端バンドデータを生成する処理が完了した場合には、前記他の１以上のバンド画像のうちの少なくとも１つのバンド画像の前記バンドデータを生成する処理が完了していない場合であっても、前記先端バンドデータを前記印刷実行部に出力する、
コンピュータプログラム。
【請求項１０】
印刷実行部に画像を印刷させるための制御装置であって、
対象画像の対象画像データを取得する第１取得部と、
第１種印刷コマンドと第２種印刷コマンドとを含む複数種類の印刷コマンドのうちの少なくとも１種の印刷コマンドであって、前記印刷実行部に出力すべき印刷コマンドとして選択される対象印刷コマンドを含む前記少なくとも１種の印刷コマンドを生成するコマンド生成部と、
前記対象印刷コマンドを前記印刷実行部に出力する出力部と、
を、備え、
前記コマンド生成部によって実現される前記第１種印刷コマンドを生成する第１生成処理は、前記対象画像データを用いて、画像補間を含む第１サイズ変更処理を実行することによって、第１種画像データを含む前記第１種印刷コマンドを生成する処理を含み、
前記コマンド生成部によって実現される前記第２種印刷コマンドを生成する第２生成処理は、
前記対象画像データを用いて、画像補間を含まない第２サイズ変更処理を実行することによって、前記対象画像を表すサイズ変更済画像データを生成する画像サイズ変更処理と、
前記サイズ変更済画像データをランレングス圧縮することによって、第２種画像データを含む前記第２種印刷コマンドを生成する圧縮処理と、
を含む、制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、印刷実行部に画像を印刷させる制御技術に関する。
【背景技術】
【０００２】
従来から、プリンタなどの印刷実行部に画像を印刷させるために、印刷コマンドが印刷実行部に出力されている。印刷コマンドとしては、例えば、IEEE-ISTO（The Institute of Electrical and Electronics Engineers - Industry Standards and Technology Organization）のプリンタワーキンググループ（PWG）によって提案されたＰＷＧラスタというデータ形式の画像データを用いるコマンドなどが、用いられている。ＰＷＧラスタの画像データは、ランレングス圧縮の１種であるパックビッツ圧縮と呼ばれる圧縮方法で、圧縮されている。ここで、特許文献１には、パックビッツ圧縮において、圧縮効率を向上させるために、出現回数の多い８ｂｉｔのデータを４ｂｉｔのコマンドに変換する方法が、提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−１２４８１７号公報
【特許文献２】特開２０１５−０２０２８１号公報
【特許文献３】特開２０１５−０５８６５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、印刷実行部に画像を印刷させるための処理速度を向上する技術が求められている。
【０００５】
本明細書は、印刷実行部に印刷コマンドを出力する際に、印刷実行部による印刷処理速度の向上につながるための新たな技術を開示する。
【課題を解決するための手段】
【０００６】
本明細書に開示された技術は、以下の適用例として実現することが可能である。
【０００７】
［適用例１］印刷実行部に画像を印刷させるためのコンピュータプログラムであって、対象画像の対象画像データを取得する第１取得機能と、第１種印刷コマンドと第２種印刷コマンドとを含む複数種類の印刷コマンドのうちの少なくとも１種の印刷コマンドであって、前記印刷実行部に出力すべき印刷コマンドとして選択される対象印刷コマンドを含む前記少なくとも１種の印刷コマンドを生成するコマンド生成機能と、前記対象印刷コマンドを前記印刷実行部に出力する出力機能と、を、コンピュータに実現させ、前記コマンド生成機能によって実現される前記第１種印刷コマンドを生成する第１生成機能は、前記対象画像データを用いて、画像補間を含む第１サイズ変更処理を実行することによって、第１種画像データを含む前記第１種印刷コマンドを生成する機能を含み、前記コマンド生成機能によって実現される前記第２種印刷コマンドを生成する第２生成機能は、前記対象画像データを用いて、画像補間を含まない第２サイズ変更処理を実行することによって、前記対象画像を表すサイズ変更済画像データを生成する画像サイズ変更機能と、前記サイズ変更済画像データをランレングス圧縮することによって、第２種画像データを含む前記第２種印刷コマンドを生成する圧縮機能と、を含む、コンピュータプログラム。
【０００８】
この構成によれば、第１種印刷コマンドに含まれる第１種画像データが、画像補間を含む第１サイズ変更処理を実行することによって生成されるので、第１種印刷コマンドが対象印刷コマンドとして選択される場合には、高画質の印刷を実現できる。また、第２種印刷コマンドに含まれる第２種画像データは、画像補間を含まない第２サイズ変更処理と、ランレングス圧縮と、を実行することによって生成されるので、対象印刷コマンドとして第２種印刷コマンドが選択される場合には、データの圧縮効率を向上させ、印刷実行部に出力される印刷コマンドのデータサイズを小さくできる。それにより、印刷処理速度向上につながる印刷コマンドを印刷実行部に出力できる。
【０００９】
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、制御方法および制御装置、印刷方法および印刷装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体（例えば、一時的ではない記録媒体）、等の形態で実現することができる。
【図面の簡単な説明】
【００１０】
【図１】実施例の画像処理システム１０００を示す説明図である。
【図２】印刷処理の例を示すフローチャートである。
【図３】（Ａ）〜（Ｄ）は、設定画面の例を示す概略図である。（Ｅ）は、プレビュー画面の例を示す概略図である。
【図４】コマンド生成処理の例を示すフローチャートである。
【図５】コマンドの種類を選択する処理の例を示すフローチャートである。
【図６】第１種印刷コマンドの生成処理の例を示すフローチャートである。
【図７】第２種印刷コマンドの生成処理の例を示すフローチャートである。
【図８】サイズ変更処理の概略図である。
【図９】第２種印刷コマンドのエンコーディング処理の例を示すフローチャートである。
【図１０】バンド画像の概略図である。
【図１１】出力処理の例を示すフローチャートである。
【図１２】出力処理の第２実施例のフローチャートである。
【発明を実施するための形態】
【００１１】
Ａ．第１実施例：
Ａ−１．端末装置１００と複合機２００との構成：
図１は、実施例の画像処理システム１０００を示す説明図である。画像処理システム１０００は、端末装置１００と、端末装置１００に接続された複合機２００と、を含んでいる。後述するように、複合機２００は、原稿等の対象物を読み取るスキャナ部２８０と、画像を印刷するプリンタ部４００と、複合機２００の全体を制御する制御部２９９と、を有している。複合機２００は、印刷を実行する印刷実行部の例である。
【００１２】
端末装置１００は、パーソナルコンピュータである（例えば、デスクトップコンピュータ、タブレットコンピュータなど）。端末装置１００は、プロセッサ１１０と、記憶装置１１５と、画像を表示する表示部１４０と、ユーザによる操作を受け入れる操作部１５０と、通信インタフェース１７０と、を有している。これらの要素は、バスを介して互いに接続されている。記憶装置１１５は、揮発性記憶装置１２０と、不揮発性記憶装置１３０と、を含んでいる。
【００１３】
プロセッサ１１０は、データ処理を行う装置であり、例えば、ＣＰＵである。揮発性記憶装置１２０は、例えば、ＤＲＡＭであり、不揮発性記憶装置１３０は、例えば、フラッシュメモリである。
【００１４】
不揮発性記憶装置１３０は、プログラム１３２を含む複数のプログラムを格納している。プロセッサ１１０は、プログラム１３２を実行することによって、通信インタフェース１７０を介して接続される複合機２００や印刷装置等の画像処理装置を制御する種々の機能を実現する。プログラム１３２によって実現される機能の詳細については、後述する。プロセッサ１１０は、プログラム１３２の実行に利用される種々の中間データを、記憶装置１１５（例えば、揮発性記憶装置１２０、不揮発性記憶装置１３０のいずれか）に、一時的に格納する。本実施例では、プログラム１３２は、後述するアプリケーションの機能を実現するためのアプリケーションプログラムである。
【００１５】
表示部１４０は、画像を表示する装置であり、例えば、液晶ディスプレイである。これに代えて、ＬＥＤディスプレイ、有機ＥＬディスプレイなどの、画像を表示する他の種類の装置が採用されてよい。操作部１５０は、ユーザによる操作を受け取る装置であり、例えば、表示部１４０上に重ねて配置されたタッチパネルである。これに代えて、ボタン、レバーなどの、ユーザによって操作される他の種類の装置が採用されてよい。ユーザは、操作部１５０を操作することによって、種々の指示を端末装置１００に入力可能である。
【００１６】
通信インタフェース１７０は、他の装置と通信するためのインタフェースである（例えば、ＵＳＢインタフェース、有線ＬＡＮインタフェース、IEEE802.11の無線インタフェース）。通信インタフェース１７０には、複合機２００が接続されている。
【００１７】
複合機２００は、制御部２９９と、スキャナ部２８０と、プリンタ部４００と、を有している。制御部２９９は、プロセッサ２１０と、記憶装置２１５と、画像を表示する表示部２４０と、ユーザによる操作を受け入れる操作部２５０と、通信インタフェース２７０と、を有している。これらの要素は、バスを介して互いに接続されている。記憶装置２１５は、揮発性記憶装置２２０と、不揮発性記憶装置２３０と、を含んでいる。
【００１８】
プロセッサ２１０は、データ処理を行う装置であり、例えば、ＣＰＵである。揮発性記憶装置２２０は、例えば、ＤＲＡＭであり、不揮発性記憶装置２３０は、例えば、フラッシュメモリである。
【００１９】
不揮発性記憶装置２３０は、プログラム２３２を格納している。プロセッサ２１０は、プログラム２３２を実行することによって、種々の機能を実現する（詳細は、後述）。プロセッサ２１０は、プログラム２３２の実行に利用される種々の中間データを、記憶装置（例えば、揮発性記憶装置２２０、不揮発性記憶装置２３０のいずれか）に、一時的に格納する。本実施例では、プログラム２３２は、複合機２００の製造者によって、ファームウェアとして、不揮発性記憶装置２３０に予め格納されている。
【００２０】
表示部２４０は、画像を表示する装置であり、例えば、液晶ディスプレイである。これに代えて、ＬＥＤディスプレイ、有機ＥＬディスプレイなどの、画像を表示する他の種類の装置が採用されてよい。操作部２５０は、ユーザによる操作を受け取る装置であり、例えば、表示部２４０上に重ねて配置されたタッチパネルである。これに代えて、ボタン、レバーなどの、ユーザによって操作される他の種類の装置が採用されてよい。ユーザは、操作部２５０を操作することによって、種々の指示を複合機２００に入力可能である。
【００２１】
通信インタフェース２７０は、他の装置と通信するためのインタフェースである。本実施例では、通信インタフェース２７０は、端末装置１００の通信インタフェース１７０に接続されている。
【００２２】
スキャナ部２８０は、ＣＣＤやＣＭＯＳなどの光電変換素子を用いて光学的に原稿等の対象物を読み取ることによって、読み取った画像（「スキャン画像」と呼ぶ）を表すスキャンデータを生成する。スキャンデータは、例えば、カラーのスキャン画像を表すＲＧＢのビットマップデータである。
【００２３】
プリンタ部４００は、所定の方式（例えば、レーザ方式や、インクジェット方式）で、用紙（印刷媒体の一例）上に画像を印刷する装置である。本実施例では、プリンタ部４００は、シアンＣ、マゼンタＭ、イエロＹ、ブラックＫの４種類のインクを用いてカラー画像を印刷可能なインクジェット方式の印刷装置である。
【００２４】
Ａ−２．印刷処理：
図２は、印刷処理の例を示すフローチャートである。本実施例では、複合機２００は、他の装置（例えば、端末装置１００）によって供給された印刷コマンドを用いて、プリンタ部４００に画像を印刷させることができる。端末装置１００のプロセッサ１１０は、プログラム１３２に従って、印刷コマンドの生成と出力とを行う印刷処理を実行する。プロセッサ１１０は、ユーザの指示（例えば、操作部１５０の操作によって入力された指示）に従って、印刷処理のためのアプリケーションを起動する。
【００２５】
Ｓ１１０では、プロセッサ１１０は、印刷装置を選択するための設定画面を、表示部１４０に表示させる。図３（Ａ）は、設定画面の例を示す概略図である。この設定画面Ｄ１は、利用可能な印刷装置のリストを表している。図３（Ａ）の例では、第１印刷装置を示す第１候補画像Ｂ１と、第２印刷装置を示す第２候補画像Ｂ２とが、表されている。第１候補画像Ｂ１は、複合機２００を示していることとする。プロセッサ１１０は、利用可能な印刷装置を検出し、検出した印刷装置のリストを含む設定画面を、表示部１４０に表示させる。
【００２６】
プロセッサ１１０は、ＳＭＢ（Server Message Block）プロトコル、ＬＰＲ（Line PRinter daemon）プロトコルなどのネットネットワークプリンタを利用するためのプロトコルに従って、ネットワーク上の印刷装置を検出する。また、プロセッサ１１０は、ＵＳＢプロトコルなどの外部装置を利用するためのプロトコルに従って、端末装置１００に接続された印刷装置を検出する。
【００２７】
ユーザは、操作部１５０を操作することによって、印刷に利用すべき印刷装置を選択する。例えば、ユーザは、操作部１５０のうち、希望する印刷装置の画像に重なる部分をタップすることによって、印刷装置を選択できる。以下、複合機２００が選択されたこととする。また、選択された印刷装置を「対象印刷装置」とも呼ぶ。また、操作部１５０のうち、表示部１４０に表示された特定の画像に重なる部分をタップすることを、特定の画像をタップするとも表現する。
【００２８】
Ｓ１２０（図２）では、プロセッサ１１０は、対象印刷装置の能力情報を取得する。能力情報は、印刷装置の能力に関する情報である。本実施例では、能力情報は、ＰＷＧラスタ形式の画像データを含むコマンドに対応しているか否かを示す情報と、対象印刷装置が受け付ける画像データの解像度である入力解像度に関する情報と、を含んでいる。入力解像度は、画素密度を示しており、例えば、ｐｐｉ（pixel per inch）、または、ｄｐｉ（dot per inch）の単位で表される。本実施例では、プロセッサ１１０は、対象印刷装置に、予め決められた手順に従って、能力情報を要求する。対象印刷装置は、要求に応じて、能力情報を端末装置１００に供給する。
【００２９】
なお、上述したように、複合機２００は、印刷とスキャンを実行できる。複合機２００からの能力情報は、複合機２００が印刷とスキャンを実行できることを示す情報が含まれる。そこで、プロセッサ１１０は、印刷とスキャンとのいずれかを選択するための設定画面を、表示部１４０に表示させる。図３（Ｂ）は、設定画面の例を示す概略図である。この設定画面Ｄ２には、印刷を示す第１画像Ｂ１１と、スキャンを示す第２画像Ｂ１２とが、表されている。ユーザは、希望する処理の画像をタップすることによって、希望する処理を選択する。以下、印刷が選択されたこととする。
【００３０】
Ｓ１３０（図２）は、プロセッサ１１０は、印刷すべき画像である対象画像を選択する。本実施例では、プロセッサ１１０は、端末装置１００の不揮発性記憶装置１３０に格納済のデータから、ユーザに、対象画像の対象画像データを選択させる。まず、プロセッサ１１０は、データ形式を選択するための設定画面を、表示部１４０に表示させる。図３（Ｃ）は、設定画面の例を示す概略図である。この設定画面Ｄ３には、写真を示す第１ボタンＢ２１と、ドキュメントを示す第２ボタンＢ２２とが、表されている。
【００３１】
写真は、ビットマップ形式を示している。ビットマップ形式としては、ＪＰＥＧ形式、ＰＮＧ形式、ＧＩＦ形式、ＴＩＦＦ形式など、複数の画素のそれぞれの色値を表す、未圧縮、または、圧縮済の、種々の形式が、利用される。本実施例では、予め決められた１以上の形式が、ビットマップ形式として利用される。本実施例では、ビットマップ形式の画像データは、横方向と縦方向と沿ってマトリクス状に配置された複数の画素のそれぞれの色値を示している。そして、複数の画素は、矩形状の画像を示している。
【００３２】
ドキュメント形式は、ビットマップ形式以外のデータ形式である。本実施例では、ＰＤＦ形式と、予め決められた特定のアプリケ−ションソフトのデータ形式（例えば、ワードプロセッサソフトウェア、表計算ソフトウェア、プレゼンテーションソフトウェアのそれぞれのデータ形式）とが、ドキュメント形式として利用される。以下、特定のアプリケ−ションソフトのデータ形式を、オフィス形式とも呼ぶ。
【００３３】
ユーザは、希望のデータ形式の画像をタップすることによって、データ形式を選択する。以下、選択されたデータ形式を、対象データ形式とも呼ぶ。データ形式が選択された場合、プロセッサ１１０は、表示部１４０に設定画面を表示させて、ユーザに対象画像データを選択させる。図３（Ｄ）は、設定画面の例を示す概略図である。この設定画面Ｄ４には、対象画像の複数の候補画像ＣＦが、表されている。候補画像ＣＦは、不揮発性記憶装置１３０に格納済の対象データ形式のデータの画像である。ユーザは、希望の候補画像ＣＦをタップすることによって、対象画像を選択する。設定画面Ｄ４中の選択画像ＳＦは、選択された画像を示している。設定画面Ｄ４は、さらに、進行ボタンＢ３１を表している。プロセッサ１１０は、進行ボタンＢ３１がタップされたことに応じて、処理を進行する。
【００３４】
Ｓ１３５（図２）では、プロセッサ１１０は、選択された対象画像のデータである対象画像データを取得する。例えば、不揮発性記憶装置１３０から対象画像データが取得される。
【００３５】
Ｓ１４０では、プロセッサ１１０は、現行の印刷設定を用いて、コマンド生成処理を開始する。本実施例では、印刷設定は、用紙の種類（光沢紙、普通紙など）、用紙サイズ（Ｌ版、Ａ４など）、縁無し印刷の適用の有無、カラーモード（カラー印刷とモノクロ印刷のいずれか）を含んでいる。最初にＳ１４０が実行される時には、印刷設定として、予め決められた初期設定が利用される。また、対象画像は、用紙サイズの用紙上の印刷可能な領域を最大限に用いて印刷されることとする（すなわち、対象画像は、用紙上の印刷可能な領域に、最大サイズで印刷される）。印刷コマンドの生成は、図２の処理とは並行して進行する。コマンド生成処理の詳細については、後述する。
【００３６】
Ｓ１５０では、プロセッサ１１０は、対象画像のプレビューを表示部１４０に表示させる。図３（Ｅ）は、プレビュー画面の例を示す概略図である。このプレビュー画面Ｄ５は、対象画像ＰＶと、設定ボタンＢ４１〜Ｂ４４と、印刷ボタンＢ４５と、を表している。ユーザは、設定ボタンＢ４１〜Ｂ４４をタップすることによって、用紙の種類と、用紙サイズと、縁無し印刷の設定と、カラーモードと、を変更できる。プロセッサ１１０は、設定ボタンＢ４１〜Ｂ４４のいずれかが操作された場合、ユーザの操作に応じて、印刷設定を変更する。このように、本実施例では、プレビュー画面Ｄ５は、印刷の設定をユーザに選択させるための設定画面である。また、ユーザは、印刷ボタンＢ４５をタップすることによって、対象印刷装置に対象画像を印刷させる指示を、入力できる。
【００３７】
Ｓ１６０（図２）では、プロセッサ１１０は、印刷ボタンＢ４５が操作されたか否かを判断する。印刷ボタンＢ４５が操作されていない場合（Ｓ１６０：Ｎｏ）、Ｓ１７０で、プロセッサ１１０は、印刷設定が変更されたか否かを判断する。印刷設定が変更されていない場合（Ｓ１７０：Ｎｏ）、プロセッサ１１０は、Ｓ１６０へ移行する。印刷設定が変更された場合（Ｓ１７０：Ｙｅｓ）、Ｓ１８０で、プロセッサ１１０は、生成中の印刷コマンドを破棄する。そして、プロセッサ１１０は、Ｓ１４０へ移行して、現行の印刷設定（すなわち、変更済の印刷設定）を用いて、コマンド生成処理を開始する。ユーザが印刷ボタンＢ４５（図３（Ｅ））を操作した場合（図２：Ｓ１６０：Ｙｅｓ）、Ｓ１９０で、プロセッサ１１０は、出力処理を実行する。出力処理によって、対象印刷コマンドが、対象印刷装置に、出力される（詳細は、後述）。
【００３８】
対象印刷コマンドの出力（図２：Ｓ１９０）が完了した場合、プロセッサ１１０は、図２の処理を終了する。対象印刷装置としての複合機２００（図１）は、受信した印刷コマンドに従って、対象画像を印刷する。本実施例では、プロセッサ２１０は、ヘッダデータを解析することによって、受信したコマンドが特定の種類の印刷コマンドであることと、印刷設定とを、特定する。そして、プロセッサ２１０は、受信したボディデータに含まれる画像データを用いて、プリンタ部４００に対象画像を印刷させる。
【００３９】
画像データを用いてプリンタ部４００に画像を印刷させる印刷実行処理は、種々の処理であってよい。プロセッサ２１０は、例えば、印刷コマンドに含まれる画像データが圧縮されている場合、圧縮されたデータを伸張する。そして、プロセッサ２１０は、画像データの解像度変換処理と、解像度が変換された画像データの色変換処理と、色変換済の画像データを用いるハーフトーン処理と、を実行することによって、印刷データを生成する。解像度変換処理は、画像データの解像度を印刷用の予め決められた印刷解像度に変換する処理である。入力解像度が印刷解像度と同じである場合、解像度変換処理は、省略される。色変換処理は、各画素の色値を、変換前の入力色空間（例えば、ＲＧＢ色空間）の色値から、印刷用の色空間である印刷色空間の色値に変換する処理である。印刷色空間は、プリンタ部４００によって使用される色材に対応する色成分で表される色空間である（本実施例では、ＣＭＹＫ色空間）。ハーフトーン処理は、例えば、誤差拡散法や、ディザマトリクスを用いる方法など、種々の方法の処理であってよい。プロセッサ２１０は、ハーフトーン処理の結果を表すデータを用いて、印刷データを生成する。印刷データのデータ形式は、プリンタ部４００によって解釈可能なデータ形式である。プロセッサ２１０は、印刷データを、プリンタ部４００に供給する。プリンタ部４００は、印刷データに従って、画像を印刷する。
【００４０】
Ａ−３．コマンド生成処理：
図４は、コマンド生成処理の例を示すフローチャートである。Ｓ２１０では、プロセッサ１１０は、コマンドの種類を選択する。図５は、コマンドの種類を選択する処理の例を示すフローチャートである。本実施例では、印刷コマンドは、ＰＷＧラスタ形式の画像データ含むコマンドと、他の形式の画像データを含むコマンドと、から選択される。以下、他の形式の画像データを含むコマンドを、第１種印刷コマンドと呼び、ＰＷＧラスタ形式の画像データ含むコマンドを、第２種印刷コマンドと呼ぶ。第１種印刷コマンドに含まれる画像データを、第１種画像データと呼ぶ。第２種印刷コマンドに含まれる画像データを、第２種画像データとも呼ぶ。
【００４１】
Ｓ３１０では、プロセッサ１１０は、対象印刷装置が第２種印刷コマンド（すなわち、ＰＷＧラスタ）に対応しているか否かを判断する。対象印刷装置が第２種印刷コマンドに対応していない場合（Ｓ３１０：Ｎｏ）、プロセッサ１１０は、Ｓ３７０で第１種印刷コマンドを選択し、図５の処理を終了する。
【００４２】
対象印刷装置が第２種印刷コマンドに対応している場合（Ｓ３１０：Ｙｅｓ）、Ｓ３２０で、プロセッサ１１０は、対象印刷装置との通信のインタフェースがＵＳＢであるか否かを判断する。インタフェースがＵＳＢとは異なる場合（Ｓ３２０：Ｎｏ）、プロセッサ１１０は、Ｓ３７０で第１種印刷コマンドを選択し、図５の処理を終了する。
【００４３】
インタフェースがＵＳＢである場合（Ｓ３２０：Ｙｅｓ）、Ｓ３３０で、プロセッサ１１０は、対象データ形式がビットマップ形式であるか否かを判断する。対象データ形式がビットマップ形式とは異なる場合（Ｓ３３０：Ｎｏ）、プロセッサ１１０は、Ｓ３６０で第２種印刷コマンドを選択し、図５の処理を終了する。
【００４４】
対象データ形式がビットマップ形式である場合（Ｓ３３０：Ｙｅｓ）、Ｓ３４０で、プロセッサ１１０は、対象画像のサイズが第１基準サイズより小さいか否かを判断する。ここで、画像のサイズとしては、解像度（すなわち、ピクセル数）と相関を有する値が用いられる。本実施例では、画像のサイズとして、横方向の画素数と縦方向の画素数とが、用いられる。第１基準サイズは、第１横基準画素数と、第１縦基準画素数と、によって表される。そして、アスペクト比（横方向の画素数に対する縦方向の画素数の比率）に拘わらずに画像のサイズを比較する方法として、解像度の比較に相当する以下の方法が採用される。「対象画像の横方向の画素数が、第１横基準画素数より小さい」という横小条件と「対象画像の縦方向の画素数が、第１縦基準画素数より小さい」という縦小条件との両方が満たされる場合、対象画像のサイズは第１基準サイズより小さい。横小条件と縦小条件との少なくとも一方が満たされない場合、対象画像のサイズは第１基準サイズ以上である。また、横小条件と縦小条件との両方が満たされず、かつ、対象画像の横方向の画素数と縦方向の画素数との少なくとも一方が、第１基準サイズの対応する方向の画素数と同じである場合、対象画像のサイズは、第１基準サイズと同じである。
【００４５】
第１基準サイズは、入力解像度に対応するサイズである入力サイズ以下のサイズである。入力サイズは、用紙サイズに予め対応付けられた形状である参照形状（例えば、用紙サイズの用紙上の印刷可能な領域の形状）の画像の解像度が入力解像度と同じである場合のその画像のサイズである。本実施例では、用紙の形状は矩形であり、参照形状は矩形であり、対象画像の形状は矩形であることとしている。ここで、入力解像度は、例えば、６００ｄｐｉであってよい。また、本実施例では、第１基準サイズは、入力サイズと同じであることとする。すなわち、第１基準サイズに対応する解像度は、入力解像度と同じである。
【００４６】
本実施例では、画像のサイズの大小関係と、解像度の大小関係とは、以下のように関連付けられている。ここで、対象画像の解像度として、用紙サイズの用紙上に最大のサイズで印刷する場合の解像度を採用する。対象画像の解像度が第１基準サイズに対応する解像度よりも高い場合、対象画像のサイズは第１基準サイズよりも大きいと判断される。対象画像の解像度が第１基準サイズに対応する解像度と同じである場合、対象画像のサイズは第１基準サイズと同じと判断される。対象画像の解像度が第１基準サイズに対応する解像度よりも低い場合、対象画像のサイズは第１基準サイズよりも小さいと判断される。後述する他の画像サイズの比較も、同様に行われる。
【００４７】
対象画像のサイズが第１基準サイズ以上である場合（Ｓ３４０：Ｎｏ）、プロセッサ１１０は、Ｓ３７０で第１種印刷コマンドを選択し、図５の処理を終了する。
【００４８】
対象画像のサイズが第１基準サイズより小さい場合（Ｓ３４０：Ｙｅｓ）、Ｓ３５０で、プロセッサ１１０は、パラメータＣｐが、閾値Ｃｔｈ以下であるか否かを判断する。パラメータＣｐは、対象画像データであるビットマップデータの画素を、横方向と縦方向とに辿る場合に、色値が変化する回数である。本実施例では、パラメータＣｐは、複数の画素行のそれぞれにおける色値が変化する回数と、複数の画素列のそれぞれにおける色値が変化する回数と、の合計値である。同じ色値の複数の画素が連続する場合、パラメータＣｐは小さくなる。対象画像が複雑なオブジェクトを表す場合に、パラメータＣｐは大きくなる。このようにパラメータＣｐは、画像の複雑さを示す指標値である。パラメータＣｐが小さい場合、ランレングス圧縮による圧縮の効率は、良好である。
【００４９】
プロセッサ１１０は、対象画像データを解析することによって、パラメータＣｐを算出する。そして、パラメータＣｐが閾値Ｃｔｈを超える場合（Ｓ３５０：Ｎｏ）、プロセッサ１１０は、Ｓ３７０で第１種印刷コマンドを選択し、図５の処理を終了する。パラメータＣｐが閾値Ｃｔｈ以下である場合（Ｓ３５０：Ｙｅｓ）、プロセッサ１１０は、Ｓ３６０で第２種印刷コマンドを選択し、図５の処理を終了する。
【００５０】
以上により、図５の処理、すなわち、図４のＳ２１０が終了する。以下、図５の処理で選択された種類の印刷コマンドを、対象印刷コマンドと呼ぶ。
【００５１】
図４のＳ２２０では、プロセッサ１１０は、Ｓ２１０で選択した印刷コマンドの種類を特定する。コマンドの種類が第１種印刷コマンドである場合、プロセッサ１１０は、Ｓ２３０で、第１種印刷コマンドの生成処理を実行し、図４の処理を終了する。コマンドの種類が第２種印刷コマンドである場合、プロセッサ１１０は、Ｓ２４０で、第２種印刷コマンドの生成処理を実行し、図４の処理を終了する。
【００５２】
図６は、第１種印刷コマンドの生成処理（図４：Ｓ２３０）の例を示すフローチャートである。Ｓ４１０では、プロセッサ１１０は、対象画像データを参照して、対象画像データのデータ形式を特定する。特定されたデータ形式がビットマップである場合、Ｓ４４０で、プロセッサ１１０は、対象画像のサイズを、入力解像度に対応する入力サイズに変更するサイズ変更処理を実行する。このような処理は、解像度変換処理とも呼ばれる。対象画像の解像度は、入力解像度に変換される。本実施例では、サイズ変更処理では、対象画像のアスペクト比は、維持される。また、入力解像度の対象画像の全体が、用紙サイズに対応付けられた上述の参照形状内に収まるように、サイズ変更処理が行われる。すなわち、サイズ変更処理の後では、対象画像の横方向の画素数と縦方向の画素数との少なくとも一方は、入力サイズの対応する方向の画素数と同じである。そして、対象画像の横方向の画素数と縦方向の画素数とは、いずれも、入力サイズの対応する方向の画素数以下である。なお、Ｓ４４０では、色値は、補間される（画像補間とも呼ぶ）。すなわち、サイズ変更後の対象画素の色値は、サイズ変更前の複数の画素のうち対象画素に近い複数の画素のそれぞれの色値を用いて、算出される（例えば、バイリニア法やバイキュービック法）。また、本実施例では、プロセッサ１１０は、サイズが変更された画像データを用いて、ＪＰＥＧ形式の画像データを生成する。そして、プロセッサ１１０は、Ｓ４９０へ移行する。
【００５３】
Ｓ４１０で特定されたデータ形式がオフィス形式である場合、Ｓ４５０で、プロセッサ１１０は、対象画像データを、ビットマップデータに変換する。本実施例では、プロセッサ１１０は、ＪＰＥＧ形式のデータを生成する。なお、Ｓ４５０では、アンチエイリアス処理が行われる。ただし、アンチエイリアス処理は省略されてもよい。また、データ形式の変換は、対象画像データのデータ形式に対応するアプリケーションプログラム（図示せず）を利用して、行われてもよい。
【００５４】
Ｓ４６０では、プロセッサ１１０は、Ｓ４５０で生成されたビットマップデータの画像のサイズが入力サイズと異なる場合に、ビットマップデータの画像のサイズを入力サイズに変更するサイズ変更処理を実行する。Ｓ４６０のサイズ変更処理は、Ｓ４４０のサイズ変更処理と同様に行われる。例えば、色値は、補間される。そして、プロセッサ１１０は、Ｓ４９０へ移行する。ビットマップデータの画像のサイズが入力サイズと同じである場合、サイズ変更処理は省略される。
【００５５】
Ｓ４１０で特定されたデータ形式がＰＤＦ形式である場合、Ｓ４７０で、プロセッサ１１０は、対象画像データを、ビットマップデータに変換する。Ｓ４７０は、Ｓ４５０と同様に、行われる。本実施例では、ＪＰＥＧ形式のデータが、生成される。データ形式の変換は、ＰＤＦ形式に対応するアプリケーションプログラム（図示せず）を利用して、行われてもよい。
【００５６】
Ｓ４８０では、プロセッサ１１０は、Ｓ４７０で生成されたビットマップデータの画像のサイズが入力サイズと異なる場合に、ビットマップデータの画像のサイズを入力サイズに変更するサイズ変更処理を実行する。Ｓ４８０の処理は、Ｓ４６０の処理と同じである。Ｓ４８０の後、プロセッサ１１０は、Ｓ４９０へ移行する。
【００５７】
Ｓ４９０では、プロセッサ１１０は、Ｓ４４０、Ｓ４５０−Ｓ４６０、Ｓ４７０−Ｓ４８０のいずれかによって生成されたビットマップデータ（ここでは、ＪＰＥＧデータ）である第１種画像データを用いて、第１種印刷コマンドを生成する。第１種印刷コマンドは、対象印刷装置によって解釈可能な形式のデータである。本実施例では、第１種印刷コマンドは、ヘッダデータとボディデータとを含んでいる。ヘッダデータは、このコマンドが第１種印刷コマンドであることを示す情報と、印刷設定を示す情報と、を含んでいる。ボディデータは、第１種画像データを含んでいる。プロセッサ１１０は、生成した第１種印刷コマンドのデータを、記憶装置１１５（例えば、揮発性記憶装置１２０と不揮発性記憶装置１３０のいずれか一方）に、一時的に格納する。第１種印刷コマンドの生成の完了に応じて、プロセッサ１１０は、図６の処理を終了する。
【００５８】
図７は、第２種印刷コマンドの生成処理（図４：Ｓ２４０）の例を示すフローチャートである。Ｓ５１０では、プロセッサ１１０は、対象画像データを参照して、対象画像データのデータ形式を特定する。データ形式がビットマップである場合、Ｓ５２０で、プロセッサ１１０は、対象画像のサイズが第２基準サイズよりも大きいか否かを判断する。この判断は、図５のＳ３４０の判断と同様に行われる（第１基準サイズの代わりに第２基準サイズが用いられる）。第２基準サイズは、入力サイズよりも小さいサイズである。また、本実施例では、第２基準サイズは、第１基準サイズ（図５：Ｓ３４０）よりも小さいサイズである。第２基準サイズは、例えば、用紙サイズに対応する参照形状の画像の解像度が３００ｄｐｉである場合のその画像のサイズであってよい。
【００５９】
対象画像のサイズが第２基準サイズよりも大きい場合（Ｓ５２０：Ｙｅｓ）、Ｓ５３０で、プロセッサ１１０は、対象画像のサイズを第２基準サイズに変更するサイズ変更処理を実行する。サイズ変更処理は、図６のＳ４４０と同様に、行われる。ただし、入力サイズの代わりに第２基準サイズが用いられる。また、色値の補間を行わずに、サイズが変更される。すなわち、サイズ変更後の対象画素の色値は、サイズ変更前の複数の画素のうち対象画素に最も近い画素の色値と同じ色値に設定される。このサイズ変更によって、対象画像の解像度は、第２基準サイズに対応する解像度と同じになる。Ｓ５３０では、対象画像のサイズが小さくなる。そして、プロセッサ１１０は、Ｓ５４０へ移行する。対象画像のサイズが第２基準サイズ以下である場合（Ｓ５２０：Ｎｏ）、プロセッサ１１０は、Ｓ５３０をスキップして、Ｓ５４０へ移行する。
【００６０】
Ｓ５４０では、プロセッサ１１０は、対象画像のサイズを、入力解像度に対応する入力サイズに変更するサイズ変更処理を実行する。サイズ変更処理は、図６のＳ４４０と同様に、行われる。ただし、色値の補間は行われない。また、対象画像の解像度は、入力解像度に変換される。なお、本実施例では、対象画像のサイズが入力サイズよりも大きい場合には、Ｓ５３０で、対象画像のサイズが小さくなるので、Ｓ５４０において、対象画像のサイズは、入力サイズよりも小さい。従って、Ｓ５４０では、対象画像のサイズが大きくなる。
【００６１】
図８は、Ｓ５４０におけるサイズ変更処理の概略図である。左側の第１部分画像ＰＩ１は、サイズ変更処理の前の部分画像を示し、右側の第２部分画像ＰＩ２は、サイズ変更処理の後の同じ部分画像を示している。各部分画像ＰＩ１、ＰＩ２の実線の矩形ＰＸ１、ＰＸ２は、１個の画素を示している。各部分画像ＰＩ１、ＰＩ２の番号Ｒｎは、行番号を示し、番号Ｃｎは、列番号を示している。第１部分画像ＰＩ１は、２行３列の６個の画素ＰＸ１で構成され、第２部分画像ＰＩ２は、４行６列の２４個の画素ＰＸ２で構成されている。このように、図８の例では、サイズ変更処理によって、横方向Ｄｘの画素数と縦方向Ｄｙの画素数とが、それぞれ、２倍に増えている。
【００６２】
第１部分画像ＰＩ１に示された色値Ｖ１〜Ｖ６は、６個の画素ＰＸ１のそれぞれの色値である。第２部分画像ＰＩ２に示された色値Ｖ１〜Ｖ６は、２４個の画素ＰＸ１のそれぞれの色値である。上述したように、Ｓ５４０のサイズ変更処理では、色値の補間は行われない。従って、サイズ変更後の対象画素の色値は、サイズ変更前の複数の画素のうち対象画素に最も近い画素の色値と同じ色値に設定される。例えば、第２部分画像ＰＩ２の画素ＰＸ２１の色値は、第１部分画像ＰＩ１の画素ＰＸ１１の色値と同じ色値に設定される。この結果、第２部分画像ＰＩ２に示されるように、サイズ変更後の画像では、同じ色値の複数の画素が、横方向Ｄｘと縦方向Ｄｙとに沿って連続して配置される。
【００６３】
また、本実施例では、プロセッサ１１０は、Ｓ５４０で、サイズが変更された画像データを用いて、可逆圧縮されたビットマップデータであるＰＮＧ形式の画像データを生成する。そして、プロセッサ１１０は、Ｓ５９０へ移行する。
【００６４】
Ｓ５１０で特定されたデータ形式がオフィス形式である場合、Ｓ５５０で、プロセッサ１１０は、対象画像データを、ビットマップデータに変換する。本実施例では、プロセッサ１１０は、可逆圧縮されたＰＮＧ形式のデータを生成する。なお、Ｓ５５０では、アンチエイリアス処理は、行われない。また、データ形式の変換は、対象画像データのデータ形式に対応するアプリケーションプログラム（図示せず）を利用して、行われてもよい。
【００６５】
Ｓ５６０では、プロセッサ１１０は、Ｓ５５０で生成されたビットマップデータの画像のサイズが入力サイズと異なる場合に、ビットマップデータの画像のサイズを入力サイズに変更するサイズ変更処理を実行する。Ｓ５６０のサイズ変更処理は、Ｓ５４０のサイズ変更処理と同様に行われる。色値は、補間されない。対象画像の解像度は、入力解像度に変換される。そして、プロセッサ１１０は、Ｓ５９０へ移行する。ビットマップデータの画像のサイズが入力サイズと同じである場合、サイズ変更処理は省略される。
【００６６】
Ｓ５１０で特定されたデータ形式がＰＤＦ形式である場合、Ｓ５７０で、プロセッサ１１０は、対象画像データを、ビットマップデータに変換する。Ｓ５７０は、Ｓ５５０と同様に、行われる。本実施例では、可逆圧縮されたＰＮＧ形式のデータが、生成される。アンチエイリアス処理は、行われない。データ形式の変換は、ＰＤＦ形式に対応するアプリケーションプログラム（図示せず）を利用して、行われてもよい。
【００６７】
Ｓ５８０では、プロセッサ１１０は、Ｓ５７０で生成されたビットマップデータの画像のサイズが入力サイズと異なる場合に、ビットマップデータの画像のサイズを入力サイズに変更するサイズ変更処理を実行する。Ｓ５８０の処理は、Ｓ５６０の処理と同じである。Ｓ５８０の後、プロセッサ１１０は、Ｓ５９０へ移行する。
【００６８】
Ｓ５９０では、プロセッサ１１０は、第２種印刷コマンドのエンコーディング処理を実行する。図９は、第２種印刷コマンドのエンコーディング処理の例を示すフローチャートである。Ｓ６１０では、プロセッサ１１０は、プロセッサ１１０の論理プロセッサ（論理コアとも呼ばれる）の数を用いて、並列処理（スレッドとも呼ばれる）の数を決定する。本実施例では、プロセッサ１１０は、複数個の論理プロセッサを備え、２個以上のスレッドのそれぞれに論理プロセッサを割り当てて同時に処理することで全体の処理速度を向上する機能（マルチスレッド処理機能とも呼ぶ）を有する。複数個の論理プロセッサは、互いに異なる処理を並列して実行可能な演算部の例である。複数個の論理プロセッサは、複数個の物理コアによって実現されても良く、１個の物理コアが複数個の論理コアを提供することで実現されても良く、これらの組み合わせによって実現されても良い。１個の物理コアが複数個の論理コアを提供する技術としては、例えば、インテル（登録商標）のハイパースレッディングテクノロジが知られている。
【００６９】
論理プロセッサ数がＬ個（Ｌは１以上の整数）である場合、並列処理の数Ｍは、１以上、Ｌ以下の任意の数であってよい。数Ｍが多いほど、エンコーディング処理を高速化できる。例えば、並列処理の数Ｍは、Ｌと同じ、または、Ｌよりも小さい値（例えば、Ｌ−１）に決定されてよい。
【００７０】
Ｓ６２０では、プロセッサ１１０は、複数の並列処理のための複数のデータを準備する。本実施例では、第２種印刷コマンドは、ヘッダデータとボディデータとを含んでいる。ヘッダデータの生成と、ボディデータの生成とは、並列に行われる。ヘッダデータは、このコマンドが第２種印刷コマンドであることを示す情報と、印刷設定を示す情報と、を含んでいる。ボディデータは、印刷対象の画像を表す第２種画像データを含んでいる。第２種画像データのデータ形式は、いわゆるＰＷＧラスタ形式である。ＰＷＧラスタ形式の画像データは、パックビッツ圧縮と呼ばれる圧縮方法で、圧縮されている。本実施例では、対象画像に含まれる複数のバンド画像のそれぞれパックビッツ圧縮が、複数の並列処理によって行われる。
【００７１】
図１０は、バンド画像の概略図である。図中には、対象画像ＯＩが示されている。先端ｅ１は、対象画像ＯＩの最先に印刷されるべき端である。後端ｅ２は、先端ｅ１とは反対側の端である。縦方向Ｄｙは、先端ｅ１から後端ｅ２へ向かう方向である。対象画像ＯＩは、複数のバンド画像ＢＩ１〜ＢＩ５を含んでいる。これらのバンド画像ＢＩ１〜ＢＩ５は、それぞれ、横方向Ｄｘに向かって延びる矩形状の部分画像である。複数のバンド画像ＢＩ１〜ＢＩ５は、縦方向Ｄｙに向かって並んでいる。
【００７２】
図中の幅Ｗ１、Ｗ２は、バンド画像ＢＩ１〜ＢＩ５のそれぞれの縦方向Ｄｙの幅である。図示するように、先端ｅ１を含む先端バンド画像ＢＩ１の幅Ｗ１は、他のバンド画像ＢＩ２〜ＢＩ５の幅Ｗ２よりも、小さい。また、バンド画像ＢＩ１〜ＢＩ５の間で、横方向Ｄｘの長さは、同じである。従って、先端バンド画像ＢＩ１は、他のバンド画像ＢＩ２〜ＢＩ５よりも、小さい。なお、本実施例では、先端バンド画像ＢＩ１の幅Ｗ１と、他のバンド画像の幅Ｗ２とは、予め決められている。
【００７３】
図９のＳ６２０では、プロセッサ１１０は、図７のＳ５２０−Ｓ５４０、Ｓ５５０−Ｓ５６０、Ｓ５７０−Ｓ５８０のいずれかによって生成されたビットマップデータ（ここでは、ＰＮＧデータ）を用いて、複数のバンド画像ＢＩ１〜ＢＩ５のそれぞれの非圧縮のビットマップデータである複数のバンドデータを生成する。また、プロセッサ１１０は、ヘッダデータの生成に要するデータ（例えば、印刷設定を示すデータ）を、生成する。
【００７４】
Ｓ６３０では、プロセッサ１１０は、Ｓ６２０で準備した複数のデータを用いて、第２種印刷コマンドのエンコーディングのための複数の処理を、並行して実行する。本実施例では、プロセッサ１１０は、ヘッダデータを生成する処理を、最優先で実行する。また、プロセッサ１１０は、複数のバンド画像ＢＩ１〜ＢＩ５（図１０）のそれぞれのバンドデータのパックビッツ圧縮を、先端ｅ１に近いほど高い優先順（すなわち、印刷すべき順）で、実行する。プロセッサ１１０は、生成したデータを、記憶装置１１５（例えば、揮発性記憶装置１２０と不揮発性記憶装置１３０のいずれか一方）に、一時的に格納する。
【００７５】
なお、図９の処理（すなわち、図７の処理）、ひいては、図４のコマンド生成処理は、図２のＳ１４０で開始される。そして、コマンド生成処理は、図２の処理とは並行して進行する。従って、対象画像の選択（図２：Ｓ１３０）の後、印刷ボタンＢ４５（図３（Ｅ））が操作されるまでの時間内に、ヘッダデータの生成が完了し得、また、１以上のバンドデータの生成が完了し得る。
【００７６】
Ａ−４．出力処理：
図２のＳ１９０で実行される出力処理の詳細について説明する。図１１は、出力処理の例を示すフローチャートである。図１１の出力処理は、対象印刷コマンドが第２種印刷コマンドである場合の処理を示している。Ｓ７１０では、プロセッサ１１０は、ヘッダデータを対象印刷装置に出力する。ヘッダデータの生成が未完了である場合、プロセッサ１１０は、ヘッダデータの生成の完了を待つ。
【００７７】
Ｓ７２０では、プロセッサ１１０は、圧縮済バンドデータが生成済であるか否かを判断する。記憶装置１１５に圧縮済バンドデータが格納されている場合（Ｓ７２０：Ｙｅｓ）、Ｓ７３０で、プロセッサ１１０は、圧縮済バンドデータを対象印刷装置へ出力する。
【００７８】
プロセッサ１１０は、圧縮済バンドデータの出力を、印刷すべき順に、行う。図９のＳ６３０で説明したように、バンドデータの圧縮の優先順は、印刷すべき順である。さらに、最先に印刷されるべき先端ｅ１（図１０）を含む先端バンド画像ＢＩ１は、他のバンド画像ＢＩ２〜ＢＩ５よりも、小さい。従って、先端バンド画像ＢＩ１の圧縮済バンドデータは、他のバンド画像ＢＩ２〜ＢＩ５の圧縮済バンドデータよりも、先に生成される。この結果、図１１のＳ７３０では、プロセッサ１１０は、先端バンド画像ＢＩ１の圧縮済バンドデータを、速やかに、対象印刷装置に出力できる。
【００７９】
本実施例では、複数のバンド画像の複数のバンドデータは、互いに独立である。すなわち、対象バンド画像の複数の画素のそれぞれの色値は、対象バンド画像よりも後端ｅ２側のバンド画像のバンドデータを用いずに、特定可能である。例えば、先端バンド画像ＢＩ１の複数の画素のそれぞれの色値は、先端バンド画像ＢＩ１よりも後端ｅ２側のバンド画像ＢＩ２〜ＢＩ５のバンドデータを用いずに、先端バンド画像ＢＩ１のバンドデータを用いて、特定可能である。このように、対象印刷装置は、全てのバンド画像の圧縮済バンドデータの受信を完了するよりも前に、受信済の圧縮済バンドデータを用いて、受信済の圧縮済バンドデータのバンド画像を印刷できる。
【００８０】
なお、対象印刷装置がネットワークに接続されている場合、プロセッサ１１０は、ネットワークを介して、種々のデータ（例えば、ヘッダデータ、圧縮済バンドデータなど）を対象印刷装置へ出力する。対象印刷装置が端末装置１００に直接に接続されている場合、プロセッサ１１０は、種々のデータを、直接的に、対象印刷装置へ出力する。
【００８１】
図１１のＳ７４０では、プロセッサ１１０は、全てのバンド画像の圧縮済バンドデータを対象印刷装置に出力したか否かを判断する。未処理のバンド画像が残っている場合（Ｓ７４０：Ｎｏ）、プロセッサ１１０は、Ｓ７２０へ移行する。そして、プロセッサ１１０は、圧縮済バンドデータを、印刷すべき順番に、対象印刷装置へ出力する。全てのバンド画像の圧縮済バンドデータの出力が完了した場合（Ｓ７４０：Ｙｅｓ）、プロセッサ１１０は、図１１の処理（ひいては、図２のＳ１９０）を、終了する。
【００８２】
対象印刷コマンドが第１種印刷コマンドである場合、プロセッサ１１０は、図１１の処理と同様に、ヘッダデータと画像データとを対象印刷装置に出力する。プロセッサ１１０は、まず、ヘッダデータを対象印刷装置に出力する。続いて、プロセッサ１１０は、ビットマップデータを、対象印刷装置に出力する。第１種印刷コマンドのビットマップデータが、第２種印刷コマンドのビットマップデータと同様に、互いに独立な複数のバンドデータで構成されている場合、プロセッサ１１０は、複数のバンドデータの出力を、印刷すべき順に行う。
【００８３】
Ａ−５．作用効果：
以上のように、端末装置１００のプロセッサ１１０は、図２のＳ１３５で、対象画像データを取得する。プロセッサ１１０は、Ｓ１４０でコマンド生成処理（図４）を開始し、第１種印刷コマンドと第２種印刷コマンドとを含む２種類の印刷コマンドのうち、印刷実行部（例えば、複合機２００）に出力すべき対象印刷コマンドを、生成する。プロセッサ１１０は、Ｓ１９０で図１１の出力処理を実行し、対象印刷コマンドを対象印刷装置へ出力する。ここで、図６に示すように、コマンド生成処理（図４）によって実現される第１種印刷コマンドの生成処理は、対象画像データを用いて、画像補間を含む第１サイズ変更処理（Ｓ４４０、Ｓ４６０、Ｓ４８０）を実行することによって、第１種画像データを含む第１種印刷コマンドを生成する（Ｓ４９０）。
【００８４】
また、本実施例では、コマンド生成処理（図４）によって実現される第２種印刷コマンドの生成処理（図７）は、第２サイズ変更処理（Ｓ５３０、Ｓ５４０、Ｓ５６０、Ｓ５８０）を含んでいる。第２サイズ変更処理は、対象画像データを用いて、画像補間を含まないサイズ変更処理を実行することによって、対象画像を表すサイズ変更済画像データを生成する処理である。また、第２種印刷コマンドの生成処理は、Ｓ５９０の処理、すなわち、図９の処理を含んでいる。図９の処理は、サイズ変更済画像データをランレングス圧縮の例であるパックビッツ圧縮することによって、第２種画像データを含む第２種印刷コマンドを生成する。
【００８５】
このように、第１種印刷コマンドに含まれる第１種画像データが、画像補間を含むサイズ変更処理を実行することによって生成されるので、第１種印刷コマンドが対象印刷コマンドとして選択される場合には、高画質の印刷を実現できる。また、第２種印刷コマンドに含まれる第２種画像データは、画像補間を含まない第２サイズ変更処理と、ランレングス圧縮の例であるパックビッツ圧縮と、を実行することによって生成される。従って、対象印刷コマンドとして第２種印刷コマンドが選択される場合には、データの圧縮効率を向上させ、対象印刷装置に出力される印刷コマンドのデータサイズを小さくできる。それにより、印刷処理速度向上につながる印刷コマンドを複合機２００に出力できる。例えば、第２種印刷コマンドのデータサイズが小さい場合には、第２種印刷コマンドのデータサイズが大きい場合と比べて、対象印刷装置による第２種印刷コマンドの受信に要する時間が短縮される。従って、端末装置１００が第２種印刷コマンドを出力してから対象印刷装置による印刷が完了するまでの印刷の処理に要する時間が、短縮される。
【００８６】
また、図２のＳ１２０では、プロセッサ１１０は、対象印刷装置の能力情報を取得する。そして、図２のＳ１４０で実行される図４のＳ２１０の処理（すなわち、図５の処理）では、プロセッサ１１０は、能力情報を用いて、複数種類の印刷コマンドから対象印刷コマンドを選択する。従って、対象印刷装置の能力に適した印刷を実現できる。
【００８７】
また、図２のＳ１２０で説明したように、能力情報は、入力解像度に関する情報を含んでいる。そして、本実施例では、図５のＳ３４０の第１基準サイズは、入力解像度に基づく入力サイズと同じである。従って、図５の処理では、プロセッサ１１０は、対象画像データがビットマップデータであり（Ｓ３３０：Ｙｅｓ）、対象画像データのピクセル数と相関を有するサイズが入力解像度に基づく入力サイズよりも小さい（Ｓ３４０：Ｙｅｓ）ことを含む条件が満たされる場合に、対象印刷コマンドとして第２種印刷コマンドを選択する（Ｓ３６０）。そして、プロセッサ１１０は、第２種印刷コマンドの生成処理（図７）のＳ５４０では、対象画像のサイズを入力サイズに変換する拡大処理を実行することによって、サイズ変更済画像データを生成する。このように、対象画像のサイズが入力サイズよりも小さい場合に（図５：Ｓ３４０：Ｙｅｓ）、対象画像のサイズを入力解像度に基づく入力サイズに変換する拡大処理が実行されるので（図７：Ｓ５４０）、パックビッツ圧縮による圧縮の効率を向上できる。
【００８８】
また、図５に示すように、第２種印刷コマンド（ＰＷＧラスタ）が選択される条件は、以下の条件を含んでいる。
（条件１）対象印刷装置が第２種印刷コマンドに対応している（Ｓ３１０：Ｙｅｓ）
この条件１により、第２種印刷コマンドに対応していない印刷装置に誤って第２種印刷コマンドが出力されることが、抑制される。
【００８９】
（条件２）対象印刷装置との通信のインタフェースがＵＳＢである（Ｓ３２０：Ｙｅｓ）
パックビッツ圧縮などのランレングス圧縮は、他の種類の圧縮（例えば、ＪＰＥＧ圧縮などの非可逆圧縮）と比べて、圧縮済のデータのサイズが大きくなり易い。すなわち、第２種印刷コマンドのデータサイズは、第１種印刷コマンドのデータサイズと比べて、大きくなりやすい。対象印刷装置との通信のインタフェースがＵＳＢではない場合、通常は、対象印刷装置は、複数の装置によって共用されるネットワーク（例えば、ＬＡＮ（Local Area Network）、インターネットなど）に接続されている。従って、第２種印刷コマンドの出力完了に要する時間が、長くなり得る。また、第２種印刷コマンドの出力に起因する通信負荷の増大が、他の通信装置の通信に影響を与え得る。対象印刷装置との通信のインタフェースがＵＳＢである場合、通常は、対象印刷装置は、端末装置１００のみに接続されている。従って、第２種印刷コマンドの出力を、短時間で、完了できる。また、第２種印刷コマンドの出力が他の通信装置の通信に影響を及ぼすことが、抑制される。
【００９０】
（条件３）対象画像データがビットマップデータであり（Ｓ３３０：Ｙｅｓ）、かつ、対象画像のサイズは、第１基準サイズより小さい（Ｓ３４０：Ｙｅｓ）
図７のＳ５２０〜Ｓ５４０で説明したように、対象画像のサイズが第１基準サイズ（本実施例では、入力サイズと同じ）よりも小さい場合には、Ｓ５４０で、対象画像のサイズが、補間せずに、拡大される。この結果、パックビッツ圧縮による圧縮の効率を向上できる。このように、条件３により、第２種印刷コマンドのデータサイズを抑制できる。
【００９１】
（条件４）対象画像データがビットマップデータであり（Ｓ３３０：Ｙｅｓ）、かつ、画像の複雑さを示す指標値（パラメータＣｐ）が、閾値以下である（Ｓ３５０：Ｙｅｓ）
上述したように、パラメータＣｐが小さい場合、パックビッツ圧縮による圧縮の効率は、良好である。条件４により、第２種印刷コマンドのデータサイズを抑制できる。
【００９２】
また、第２種印刷コマンドの生成処理（図７）では、対象画像データがドキュメントデータである場合（本実施例では、オフィス、または、ＰＤＦ）、プロセッサ１１０は、Ｓ５５０、Ｓ５７０で、対象画像データを、可逆圧縮された対象ビットマップデータであるＰＮＧデータに変換する。そして、プロセッサ１１０は、Ｓ５９０（具体的には、図９のＳ６３０）で、対象ビットマップデータと、対象ビットマップデータに第２サイズ変更処理（図７：Ｓ５６０、Ｓ５８０）を実行して得られる画像データと、のいずれかをパックビッツ圧縮することによって、第２種印刷コマンドに含まれる第２種画像データを生成する。画像データの非可逆圧縮は、伸張された画像データの画像中にノイズを発生させ得る。本実施例では、対象画像データは、可逆圧縮された対象ビットマップデータであるＰＮＧデータに変換される。従って、対象ビットマップデータに含まれるノイズが少ないので、パックビッツ圧縮による圧縮の効率を向上できる。
【００９３】
また、第２サイズ変更処理（図７：Ｓ５６０、Ｓ５８０）では、色値の補間を行わずに、画像のサイズが変更される。従って、サイズ変更に起因するノイズは、抑制される。この結果、対象ビットマップデータに含まれるノイズが少ないので、パックビッツ圧縮による圧縮の効率を向上できる。
【００９４】
また、図７のＳ５２０、Ｓ５３０で説明したように、プロセッサ１１０は、対象画像データがビットマップデータであり、対象画像データのピクセル数と相関を有するサイズが第２基準サイズよりも大きい場合に（Ｓ５２０：Ｙｅｓ）、Ｓ５３０で、対象画像のサイズを第２基準サイズに縮小する。そして、プロセッサ１１０は、Ｓ５４０で、縮小処理によって得られる画像のサイズを印刷実行部が受け付ける画像データの解像度である入力解像度に基づく入力サイズに拡大する。このように、対象画像のサイズが第２基準サイズよりも大きい場合、プロセッサ１１０は、対象画像を一旦は縮小し、そして、縮小済の対象画像を、色値を補間せずに拡大するので、サイズ変更済の対象画像において、同じ色値の複数の画素が連続することが促進される。この結果、パックビッツ圧縮による圧縮の効率を向上できる。
【００９５】
また、図９で説明したように、プロセッサ１１０は、プロセッサ１１０が複数の論理プロセッサを備える場合に、第２種印刷コマンドを生成する処理に含まれる複数の処理を、複数の論理プロセッサに並列して実行させる。従って、第２種印刷コマンドの生成に要する時間を、短縮できる。
【００９６】
また、図９のＳ６３０、図１０で説明したように、プロセッサ１１０は、第２種画像データに含まれる複数のバンドデータであって対象画像ＯＩに含まれる複数のバンド画像ＢＩ１〜ＢＩ５に対応する複数のバンドデータのうちの少なくとも一部の複数のバンドデータを生成する処理を、複数の論理プロセッサに並列して実行させる。例えば、Ｓ６１０で決定された並列処理の数が３である場合、５個のバンド画像ＢＩ１〜ＢＩ５に対応する５個のバンドデータのうち、３個のバンドデータが、並列して処理される。そして、図１０で説明したように、複数のバンド画像ＢＩ１〜ＢＩ５のうちの対象画像ＯＩの最先に印刷されるべき先端ｅ１を含む先端バンド画像ＢＩ１のサイズは、他の１以上のバンド画像ＢＩ２〜ＢＩ５のそれぞれのサイズのうちの最大サイズよりも、小さい。従って、プロセッサ１１０は、先端バンド画像ＢＩ１の圧縮済のバンドデータを、速やかに生成できる。
【００９７】
さらに、図１１で説明したように、プロセッサ１１０は、先端バンド画像ＢＩ１（図１０）のバンドデータである先端バンドデータを生成する処理が完了した場合には（Ｓ７２０：Ｙｅｓ）、他の１以上のバンド画像ＢＩ２〜ＢＩ５のうちの少なくとも１つのバンド画像のバンドデータを生成する処理が完了していない場合であっても、先端バンドデータを対象印刷装置に出力する（Ｓ７３０）。従って、対象印刷装置は、印刷を速やかに開始できる。
【００９８】
Ｂ．第２実施例：
第２実施例は、第１実施例における図２の印刷処理とは、Ｓ１４０で開始されるコマンド生成処理およびＳ１９０の出力処理が異なる。以下、第１実施例とは異なる処理について説明する。
【００９９】
第１実施例では、図４のＳ２１０にてコマンドの種類を選択し、選択されたコマンドの種類に応じて印刷コマンドを生成する。一方、第２実施例では、複数の印刷コマンド（すなわち第１種印刷コマンドおよび第２種印刷コマンド）をそれぞれ生成する。すなわち、プロセッサ１１０は、図４のＳ２３０の処理と図４のＳ２４０の処理とを並行して実行する。プロセッサ１１０が複数個の論理プロセッサを備える場合、プロセッサ１１０は、Ｓ２３０とＳ２４０とのそれぞれに論理プロセッサを割り当てて、Ｓ２３０とＳ２４０とを同時に実行してよい。また、プロセッサ１１０が１つの論理プロセッサを備える場合、プロセッサ１１０は、Ｓ２３０とＳ２４０とを少しずつ交互に進行してよい。以上により、対象画像の選択（図２：Ｓ１３０）の後、印刷ボタンＢ４５（図３（Ｅ））が操作されるまでの時間内に、第１種印刷コマンドの生成と第２種印刷コマンドの生成とのそれぞれが、進行する。
【０１００】
印刷ボタンＢ４５（図３（Ｅ））が操作される場合（図２：Ｓ１６０：Ｙｅｓ）、図２のＳ１９０で、図１２の出力処理が実行される。Ｓ８０５は、図５のＳ３１０と同じである。対象印刷装置が第２種印刷コマンドに対応していない場合（Ｓ８０５：Ｎｏ）、プロセッサ１１０は、Ｓ８３０で、第１種印刷コマンドを対象印刷装置へ出力する。Ｓ８３０は、第１実施例における対象印刷コマンドが第１種印刷コマンドである場合の出力処理と同じであってよい。すなわち、プロセッサ１１０は、ヘッダデータを対象印刷装置に出力し、続いて、ビットマップデータを、対象印刷装置に出力する。そして、プロセッサ１１０は、図１２の処理を終了する。
【０１０１】
対象印刷装置が第２種印刷コマンドに対応している場合（Ｓ８０５：Ｙｅｓ）、Ｓ８１０で、プロセッサ１１０は、第２種印刷コマンドのデータのうち生成済の部分のデータサイズが、基準データサイズ以下であるか否かを判断する。本実施例では、基準データサイズは、予め決められている。
【０１０２】
生成済の部分のデータサイズが基準データサイズ以下である場合（Ｓ８１０：Ｙｅｓ）、プロセッサ１１０は、Ｓ８２０で第２種印刷コマンドのデータを対象印刷装置に出力し、図１２の処理を終了する。Ｓ８２０の処理は、図１１の処理と同じであってよい。すなわち、プロセッサ１１０は、印刷すべき順に、圧縮済のバンドデータを対象印刷装置に出力してよい。
【０１０３】
生成済の部分のデータサイズが基準データサイズを超える場合（Ｓ８１０：Ｎｏ）、プロセッサ１１０は、Ｓ８３０で第１種印刷コマンドのデータを対象印刷装置に出力し、図１２の処理を終了する。
【０１０４】
図１２の出力処理、すなわち、図２のＳ１９０の終了によって、図２の印刷処理は、終了する。
【０１０５】
以上のように、図２のＳ１６０では、プロセッサ１１０は、対象画像を対象印刷装置に印刷させる指示を受け付ける。プロセッサ１１０は、指示が受け付けられる前に（Ｓ１６０：Ｎｏ）、Ｓ１５０で、対象画像を表示部１４０に表示させる。そして、プロセッサ１１０は、指示が受け付けられる前に（Ｓ１６０：Ｎｏ）、第２種印刷コマンドを生成する処理を、開始する。従って、指示が受け付けられてから、対象印刷コマンドである第２種印刷コマンドが対象印刷装置に出力されるまでの時間を短縮できる。
【０１０６】
また、図１２のＳ８１０で説明したように、プロセッサ１１０は、第２種印刷コマンドのうちの指示が受け付けられる前に生成済の部分のデータサイズが基準データサイズを超える場合に（Ｓ８１０：Ｎｏ）、第１種印刷コマンドを対象印刷装置に出力する（Ｓ８３０）。従って、過度に大きいサイズの第２種印刷コマンドが出力されることを抑制できる。
【０１０７】
なお、第２実施例で説明したコマンド生成処理において、プロセッサ１１０は、まず、図５のＳ３１０と同様に、印刷装置が第２種印刷コマンドに対応しているかを判断し、対応していなければ、第２種印刷コマンドを生成せず、第１種印刷コマンドのみを生成してもよい。
【０１０８】
Ｃ．変形例：
（１）第２種印刷コマンドの生成処理は、図７等で説明した処理に代えて、他の種々の処理であってよい。例えば、Ｓ５３０では、対象画像のサイズは、第２基準サイズよりも小さいサイズに変更されてよい（例えば、第２基準サイズの解像度（例えば、３００ｄｐｉ）の半分の解像度（１５０ｄｐｉ）に対応するサイズ）。また、Ｓ５３０のサイズ変更処理では、色値が補間されてもよい。この場合も、Ｓ５４０では、色値を補間せずにサイズが拡大されるので、パックビッツ圧縮による圧縮の効率を向上できる。また、Ｓ５２０、Ｓ５３０、Ｓ５４０に代えて、Ｓ５６０、Ｓ５８０と同様に画像のサイズを入力サイズに変更するサイズ変更処理が実行されてよい。この場合、対象画像の解像度が入力解像度よりも高い場合には、色値を補間せずに画像が縮小される。サイズ変更前の対象画像が、同じ色値の連続する複数の画素を含む場合、サイズ変更後の対象画像も、同じ色値の連続する複数の画素を含み得るので、パックビッツ圧縮による圧縮の効率を向上できる。Ｓ５５０、Ｓ５７０では、対象画像データは、非圧縮のビットマップデータに変換されてよい。Ｓ５５０、Ｓ５７０では、対象画像データは、非可逆圧縮のビットマップデータに変換されてよい。
【０１０９】
また、図７のＳ５２０、Ｓ５３０は、省略されてもよい。第２種印刷コマンドを出力するための条件が、図５のＳ３４０の条件（対象画像のサイズが第１基準サイズより小さい、すなわち、対象画像のサイズが入力サイズより小さい）を含む場合、図５のＳ５４０では、色値を補間せずに対象画像のサイズを拡大するサイズ変更処理が行われる。従って、パックビッツ圧縮による圧縮の効率を向上できる。図７のＳ５２０、Ｓ５３０を省略する代わりに、図５のＳ３４０が省略されてもよい。この場合、対象画像のサイズが第２基準サイズより大きい場合、すなわち、対象画像のサイズが入力サイズ以上である場合（Ｓ５２０：Ｙｅｓ）、Ｓ５３０で対象画像のサイズが入力サイズよりも小さい第２基準サイズに縮小される。この結果、Ｓ５４０で、対象画像のサイズを適切に拡大できる。
【０１１０】
（２）第２種印刷コマンドに含まれる第２種画像データのデータ形式は、パックビッツ圧縮によって圧縮されたビットマップ形式に代えて、他の種々のランレングス圧縮によって圧縮されたビットマップ形式であってよい。プロセッサ１１０は、図７のＳ５９０（例えば、図９のＳ６３０）で、予め決められた圧縮方法によって、画像データを圧縮してよい。
【０１１１】
（３）対象画像に含まれる複数のバンド画像の構成は、図１０のバンド画像ＢＩ１〜ＢＩ５の構成に代えて、他の種々の構成であってよい。例えば、先端バンド画像ＢＩ１以外の複数のバンド画像の間で、幅が異なっていてもよい。また、１つの対象画像に含まれるバンド画像の総数は、２以上の任意の数であってよい。また、各バンド画像の幅は、用紙サイズに応じて、決定されてよい。例えば、用紙サイズが大きいほど、バンド画像の幅が大きな幅に決定されてよい。いずれの場合も、バンド画像の形状は、対象画像の最先に印刷されるべき先端から後端に向かう方向に垂直な方向に延びる矩形状の画像であってよい。例えば、図１０の例では、各バンド画像ＢＩ１〜ＢＩ５は、先端ｅ１から後端ｅ２へ向かう縦方向Ｄｙに垂直な横方向Ｄｘに延びる矩形状の画像である。そして、対象画像の先端を含む先端バンド画像のサイズ（具体的には、総画素数）は、先端バンド画像以外の他の１以上のバンド画像のそれぞれのサイズのうちの最大サイズよりも小さいことが、好ましい。さらに、先端バンド画像は、対象画像に含まれる複数のバンド画像のうちの最小サイズのバンド画像であることが、好ましい。ただし、複数のバンド画像の間で、サイズが同じであってよい。
【０１１２】
（４）図９の実施例では、第２種印刷コマンドのヘッダデータを生成する処理と、複数のバンドデータをパックビッツ圧縮する処理とが、並列に行われる。ここで、並列に行われる処理は、他の種々の処理であってよい。例えば、プロセッサ１１０は、対象画像を複数のバンド画像に区分せずに、ヘッダデータの生成と画像データのパックビッツ圧縮とを、並列に実行してよい。また、対象画像データが複数頁の画像を表す場合、複数頁の画像データのパックビッツ圧縮が、並列に行われてよい。一般的には、第２種印刷コマンドを生成する処理に含まれる任意の複数の処理が、並列に行われてよい。ただし、第２種印刷コマンドは、並列処理を用いずに、生成されてよい。例えば、プロセッサ１１０は、ヘッダデータ、ボディデータの順に、第２種印刷コマンドに含まれるデータを生成してよい。
【０１１３】
（５）第１種印刷コマンドに含まれる第１種画像データのデータ形式は、ＪＰＥＧ形式に代えて、ランレングス圧縮されたデータ形式とは異なる他の任意の形式であってよい。例えば、ＨＥＩＦ（High Efficiency Image File Format）が採用されてよい。
【０１１４】
（６）対象印刷装置に出力すべき印刷コマンドの種類を選択する方法は、種々の方法であってよい。例えば、プロセッサ１１０は、印刷コマンドの種類の選択に利用される能力情報として、ユーザによる操作部１５０の操作によって入力された能力情報を利用してよい。この場合、図２のＳ１２０では、プロセッサ１１０は、操作部１５０の操作によって入力された情報を参照することによって、能力情報を取得する。また、プロセッサ１１０は、能力情報を用いずに、印刷コマンドの種類を選択してよい。
【０１１５】
第２種印刷コマンドを選択するための条件は、図５で説明した条件に代えて、他の任意の条件であってよい。図５のＳ３４０の第１基準サイズは、入力サイズよりも小さいサイズであってよい。例えば、第１基準サイズは、入力解像度よりも粗い解像度（例えば、４５０ｄｐｉ）に対応するサイズであってよい。Ｓ３５０のパラメータＣｐは、画像の複雑さを示す任意の指標値であってよい。例えば、パラメータＣｐは、対象画像に含まれるエッジ画素の総数であってよい。エッジ画素は、公知のエッジ抽出フィルタ（例えば、ソーベルフィルタ）を用いて、検出可能である。また、図５のＳ３１０以外の条件（Ｓ３２０、Ｓ３３０、Ｓ３４０、Ｓ３５０）のうち任意の条件が、省略されてよい。
【０１１６】
また、プロセッサ１１０は、ユーザの指示に応じて、印刷コマンドの種類を選択してよい。例えば、印刷設定が、「画質優先」と「速度優先」とを含む複数のモードから選択される印刷モードを含む場合がある。ここで、プロセッサ１１０は、「画質優先」が選択される場合には第１種印刷コマンドを選択し、「速度優先」が選択される場合には第２種印刷コマンドを選択してよい。
【０１１７】
（７）コマンド生成処理は、上記実施例の処理に代えて、他の種々の処理であってよい。例えば、第２実施例で、対象印刷装置が第２種印刷コマンドに対応している場合、プロセッサ１１０は、第１種印刷コマンドの生成処理を実行せずに、第２種印刷コマンドの生成処理を実行してよい。そして、図１２の出力処理において、データサイズが基準データサイズを超える場合（Ｓ８１０：Ｎｏ）、プロセッサ１１０は、第１種印刷コマンドを生成する処理を開始してよい。また、Ｓ８１０において、基準データサイズと比較されるデータサイズは、第２種印刷コマンドのデータのうち生成済の部分のデータサイズに代えて、第２種印刷コマンドのうちの種々の部分のデータサイズであってよい。例えば、完成した第２種印刷コマンドのデータの全体のサイズが、基準データサイズ以下である場合に、Ｓ８１０の判断結果がＹｅｓであってよい。一般的には、第２種印刷コマンドのうちの対象画像を対象印刷装置に印刷させる指示が受け付けられる前に生成済の部分を含む特定の部分のデータサイズが基準データサイズと比較されてよい。
【０１１８】
（８）利用可能な印刷コマンドの種類の数Ｋは、３以上であってよい。一般的には、印刷処理において、プロセッサ１１０は、Ｋ種類（Ｋは２以上の整数）の印刷コマンドのうち、対象印刷コマンドを含む少なくとも１種の印刷コマンドを生成してよい。
【０１１９】
（９）印刷処理は、図２で説明した処理に代えて、他の種々の処理であってよい。例えば、Ｓ１４０は、Ｓ１６０の判断結果がＹｅｓである場合に、実行されてよい。このように、プロセッサ１１０は、コマンド生成処理を、対象画像を対象印刷装置に印刷させる指示を受け付けた後に、開始してよい。また、対象画像のプレビュー（Ｓ１５０）は、省略されてもよい。また、ユーザが変更可能な印刷設定は、図３（Ｅ）等で説明した項目に限らず、任意の項目であってよい。例えば、印刷設定は、用紙上の対象画像の印刷サイズを調整する倍率を含んでよい。この場合、判断基準を示すサイズ（入力サイズや基準サイズなど）と比較すべき対象画像のサイズ（ひいては、解像度）は、用紙上の対象画像の調整後の印刷サイズを用いて特定されることが好ましい。例えば、用紙上の対象画像の印刷サイズが小さいサイズに調整される場合、対象画像データの画素数に対する用紙上の対象画像の印刷サイズが小さくなるので、対象画像の解像度は高くなる。プロセッサ１１０は、この高い解像度に基づいて画像のサイズの大小関係を判断するために、対象画像のサイズと判断基準を示すサイズとの少なくとも一方を、倍率（ひいては、印刷サイズ）を用いて調整することが好ましい。一般的には、判断基準を示すサイズと比較すべき対象画像のサイズとしては、対象画像データのピクセル数と相関を有する種々の値を採用可能である。
【０１２０】
（１０）画像を印刷する装置である印刷実行部は、複合機２００とは異なる種類の装置であってよい。例えば、単機能の印刷装置であってよい。また、印刷実行部に画像を印刷させる制御装置は、図１の端末装置１００のようなパーソナルコンピュータとは異なる種類の装置（例えば、デジタルカメラ、スキャナ、スマートフォン）であってもよい。また、制御装置が、印刷装置の一部であってもよい。例えば、複合機２００の制御部２９９が、端末装置１００の代わりに、印刷処理を実行してよい。また、ネットワークを介して互いに通信可能な複数の装置（例えば、コンピュータ）が、制御装置による制御処理の機能を一部ずつ分担して、全体として、制御処理の機能を提供してもよい（これらの装置を備えるシステムが制御装置に対応する）。
【０１２１】
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。
【０１２２】
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体（例えば、一時的ではない記録媒体）に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体（コンピュータ読み取り可能な記録媒体）に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやＣＤ−ＲＯＭのような携帯型の記録媒体に限らず、各種ＲＯＭ等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
【０１２３】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【０１２４】
１００…端末装置、１１０…プロセッサ、１１５…記憶装置、１２０…揮発性記憶装置、１３０…不揮発性記憶装置、１３２…プログラム、１４０…表示部、１５０…操作部、１７０…通信インタフェース、２００…複合機、２１０…プロセッサ、２１５…記憶装置、２２０…揮発性記憶装置、２３０…不揮発性記憶装置、２３２…プログラム、２４０…表示部、２５０…操作部、２７０…通信インタフェース、２８０…スキャナ部、２９９…制御部、４００…プリンタ部、１０００…画像処理システム
【図１】
2020052895.tif 000003
【図２】
2020052895.tif 000004
【図３】
2020052895.tif 000005
【図４】
2020052895.tif 000006
【図５】
2020052895.tif 000007
【図６】
2020052895.tif 000008
【図７】
2020052895.tif 000009
【図８】
2020052895.tif 000010
【図９】
2020052895.tif 000011
【図１０】
2020052895.tif 000012
【図１１】
2020052895.tif 000013
【図１２】
2020052895.tif 000014