JP5901704B2 - 情報処理装置、情報処理方法、プログラム - Google Patents

情報処理装置、情報処理方法、プログラム Download PDF

Info

Publication number
JP5901704B2
JP5901704B2 JP2014135177A JP2014135177A JP5901704B2 JP 5901704 B2 JP5901704 B2 JP 5901704B2 JP 2014135177 A JP2014135177 A JP 2014135177A JP 2014135177 A JP2014135177 A JP 2014135177A JP 5901704 B2 JP5901704 B2 JP 5901704B2
Authority
JP
Japan
Prior art keywords
layer
image
image data
data
script
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014135177A
Other languages
English (en)
Other versions
JP2016014919A (ja
Inventor
慶範 溝口
慶範 溝口
鈴木 智博
智博 鈴木
梅田 清
清 梅田
尚紀 鷲見
尚紀 鷲見
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2014135177A priority Critical patent/JP5901704B2/ja
Priority to US14/741,958 priority patent/US9436413B2/en
Publication of JP2016014919A publication Critical patent/JP2016014919A/ja
Application granted granted Critical
Publication of JP5901704B2 publication Critical patent/JP5901704B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1206Improving or facilitating administration, e.g. print management resulting in increased flexibility in input data format or job format or job type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • G06F3/1247Job translation or job parsing, e.g. page banding by conversion to printer ready format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1292Mobile client, e.g. wireless printing

Description

本発明は、画像処理を行う情報処理装置、情報処理方法、プログラムに関する。
近年、カメラ機能が搭載された可搬型多機能携帯電話(以下、モバイルコンピュータ)が普及し、デジタルカメラや従来のパーソナルコンピュータ(以下、PC)の販売台数を遥かに凌ぐ勢いで拡販されている。このようなモバイルコンピュータのシステムは、基本的には3つの要素で成り立っている。即ち、コンピュータ自身であるハードウェア、ハードウェア上で動作するオペレーティングシステム(以下、OS)、OS上で動作するアプリケーションである。ユーザは、アプリケーションを用いて、地図やメール、ブラウザを起動してインターネット上のウェブサイトを閲覧するなどの操作を行うことができる。このようなモバイルコンピュータ上で動作するアプリケーションの形態として、主に2つのものが存在する。ネイティブアプリケーションとウェブアプリケーションである。以下、それぞれの特徴を説明する。
ネイティブアプリケーションは、通常、OS毎に用意される開発環境や開発言語により開発される。例えば、A社が提供するOS上ではC/C++言語、B社が提供するOS上ではJava(登録商標)言語、C社が提供するOS上では更に異なる開発言語を用いる、といったようにOS毎に異なる開発言語で開発される。ネイティブアプリケーションは、各開発環境において予めコンパイル(翻訳)され、人間が理解可能ないわゆる高水準言語から、コンピュータのCPUが解釈可能なアセンブラ等の命令セット群に変換される。このように、ネイティブアプリケーションには、命令を直接CPUが解釈することから高速動作が可能であるというメリットがある。
ウェブアプリケーションは、コンピュータ上のOSに標準的に組み込まれているウェブブラウザ上で動作するアプリケーションである。ウェブアプリケーションは、ウェブブラウザが解釈できるように、一般的には、HTML5、CSS、Javascript(登録商標)といった言語を用いて開発される。これらはウェブ標準言語であるため、一度アプリケーションを記述すれば、ウェブブラウザが動作する環境であればどこでも動作可能というメリットがある。特許文献1には、ウェブアプリケーションの形態の一例が記載されている。HTML5、CSS、JavaScriptで記述されたウェブアプリケーションの本体は、モバイルコンピュータ外部のサーバ上に存在する。ウェブアプリケーションは、利用時にサーバからモバイルコンピュータにインターネット回線を介してダウンロードされるため、ユーザは、ユーザインタフェース(UI)デザインなどを予めコンパイルすることなく動的に変更することができる。
近年では、このようなモバイルコンピュータの普及とともに、上記OSの種類も多種多様なものとなっている。そのため、それらの上で動作するアプリケーションを如何に短期間で開発して、ユーザにスピーディに提供できるか、がソフトウェア開発における重要な課題となっている。このような課題を解決する方法として、クロス開発と呼ばれる手法が存在する。クロス開発とは、アプリケーションの大部分を、各種OSに横断的に利用できる共通プログラム言語を用いて開発を行うことである。共通であるため、各OSで個別に開発するための工数が不要となり、有効なアプリケーション開発手法として知られている。
ウェブアプリケーションは、上記課題を解決する一つの方法であるが、ウェブアプリケーションはブラウザ上で動作するため、ネイティブアプリケーションとして各ベンダが運営するアプリケーションストアから配布することができない。そこで、上記ストアから配布可能な、ネイティブアプリケーション形式におけるクロス開発手法が求められるようになってきた。
ストア配布可能なクロス開発手法の一つとして、特許文献1に記載されているようなハイブリッド型アプリケーションが注目されている。ハイブリッド型アプリケーションとは、アプリケーション自身は、前述のネイティブアプリケーションとしてユーザに配布される。しかしながら、そのユーザインタフェース(UI)の全て、あるいは大部分は、HTML5、CSS3、Javascriptといったいわゆるウェブの標準言語で記述されていることが特徴である。すなわち、1つのアプリケーション内部に、ウェブ標準言語によるスクリプト層とネイティブ層を双方包含する構成となっている。このような構成を取ることにより、上記ネイティブアプリケーションとウェブアプリケーションの利点を双方保持したソフトウェア構成とすることができる。
特開2013−80470号公報
しかしながら、上述したハイブリッド型アプリケーションを、写真や文書を印刷するといった印刷アプリケーションに適用しようとした場合、以下のような課題が存在する。
通常のハイブリッド型アプリケーションでは、UI部はウェブ標準言語で記述され、それがテキストデータとしてアプリケーション内部に保持されている。このテキストデータはスクリプトと呼ばれる。スクリプトは、アプリケーションが起動した際に、OSが保持するスクリプトを翻訳して実行するためのエンジン(インタプリタ)に入力される。その結果、モバイルコンピュータの画面上にUI画面が表示され、ユーザ操作が可能となる。
写真印刷アプリケーションを考えた場合、例えばUI画面上で、印刷対象となる写真を描画し、そこに撮影日時などの日付情報を重畳し、絵文字などのスタンプ画像を重畳し、その結果をユーザがプリントできるよう、ソフトウェアを構築する必要がある。ハイブリッド型アプリケーションの場合、そのような印刷コンテンツの描画も、ウェブ標準言語を用いて記述することになる。UI画面上に描画された画像やスタンプ画像を印刷する場合には、それらの印刷コンテンツを印刷用のビットマップデータへ変換する必要がある。この処理をレンダリング処理と呼ぶ。
ここで、ウェブ標準言語を利用して上記のレンダリング処理を行う際には、スクリプト層側が持つ画像データに対する画面描画以外の二次利用禁止という制約が一般的に存在する。
上記の制約は、ウェブ標準言語が端末内外の画像を扱う際の制約として存在する。HTMLでは、画像のファイルパスを指定することにより画像データをImageオブジェクトという形で取得することができる。そして、ImageオブジェクトはCanvas機能を利用してメモリ確保を行い、Canvasの持つAPIによってUI画面への描画を行うことができる。
しかしながら、上記の方法で画像データを取得した場合、Imageオブジェクトからデータを取り出して変換処理を行うことができなくなるという制約がある。具体的には、toBlob関数やtoDataURL関数などが利用できなくなるといった制約である。上記のようなHTML特有の現象は、外部のWebサイトから画像が二次利用されることを防止するために策定されたルールによって引き起こされるものである。
上記のハイブリッド型アプリケーションを写真印刷アプリケーションに適用しようとすると、上記の一般的に存在する制約のために、画像データを取得して印刷するというアプリケーション機能が実現できないことがある。
本発明の目的は、このような従来の問題点を解決することにある。上記の点に鑑み、本発明は、スクリプト層を含むソフトウェア構成において、取得された画像データに対する画像処理の実行不可を防ぐ情報処理装置、情報処理方法、プログラムを提供することを目的とする。
上記課題を解決するため、本発明に係る情報処理装置は、プロセッサと、アプリケーションの実行の際に前記プロセッサが実行可能に翻訳されて実行されるスクリプト命令セットで構成された第1の層と、前記プロセッサが実行可能な命令セットで構成された第2の層と、を有する階層構造を成し、前記第1の層と前記第2の層との連携により前記アプリケーションを実行するためのプログラムを記憶する記憶手段と、前記アプリケーションの機能により、指定された画像に対する画像処理を行う場合、前記第2の層において、当該指定された前記画像の画像データを取得する取得手段と、前記第1の層において、前記取得手段により取得され且つ前記第2の層において前記第1の層が解釈可能なデータ形式に変換された前記画像データを含む、印刷用コンテンツの印刷スクリプトを生成する生成手段と、前記生成手段により生成された前記印刷スクリプトを解釈することにより、当該印刷スクリプトを印刷用解像度に対応する印刷用画像データにレンダリングするレンダリング手段と、を備え、前記レンダリング手段は、印刷用紙情報に基づいて出力画像サイズを取得し、前記印刷スクリプトに含まれている前記画像データを当該取得された出力画像サイズに応じて拡大または縮小することで、前記印刷用画像データを生成することを特徴とする。
本発明によれば、取得された画像データに対する画像処理の実行不可を防ぐことができる。
携帯型情報端末のハードウェア構成を示すブロック図である。 携帯型情報端末のソフトウェア構成を示すブロック図である。 写真印刷処理の全体の手順を示すフローチャートである。 S301の写真画像選択の処理を示すフローチャートである。 S302の画像処理を示すフローチャートである。 S303のスタンプ画像追加の処理を示すフローチャートである。 S304のスタンプ画像の特定の処理を示すフローチャートである。 S305のスタンプ画像の操作処理を示すフローチャートである。 S306のプリンタ設定の処理を示すフローチャートである。 S307のレンダリング処理を示すフローチャートである。 S308のプリント処理を示すフローチャートである。 写真印刷アプリケーション画面の一例を示す図である。 プリンタの設定UIの一例を示す図である。 プリンタのリストの一例を示す図である。 複数の画像処理を表示するプルダウンメニューの一例を示す図である。 携帯型情報端末のソフトウェア構成の他の例を示す図である。 写真画像選択の処理の他の例を示すフローチャートである。 画像処理の他の例を示すフローチャートである。 スタンプ画像の追加処理の他の例を示すフローチャートである。 レンダリング処理の他の例を示すフローチャートである。 携帯型情報端末のソフトウェア構成の他の例を示す図である。 写真画像選択の処理の他の例を示すフローチャートである。 写真画像選択の処理の他の例を示すフローチャートである。 画像処理の他の例を示すフローチャートである。 スタンプ画像の追加の処理の他の例を示すフローチャートである。
以下、添付図面を参照して本発明の好適な実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
[第1の実施形態]
以下、携帯型情報端末上で、ウェブアプリケーションの1つである写真印刷アプリケーションを動作させたときの動作について説明する。写真印刷アプリケーションでは、ユーザが選択した画像に対して様々な画像処理(例えば、輝度補正し、スタンプ画像を追加)を適用した後に、印刷対象のコンテンツを印刷する。なお、本実施形態においては、写真印刷アプリケーションは、後述するハイブリッド型アプリケーションとして提供されている。
[ハードウェア構成]
図1は、情報処理装置、特に、携帯型情報端末100のハードウェア構成の一例を示すブロック図である。同図において、CPU(中央演算装置)101は、各実施形態において説明する動作を、プログラムをROM102からRAM103に読み出して実行することにより実現する。ROM102は、CPU100により実行されるプログラム等を記憶するコンピュータ読取可能な記憶媒体である。RAM103は、例えば、CPU100によるプログラムの実行時に、各種データを一時的に記憶するためのワーキングメモリとして用いられる。2次記憶装置104は、例えばハードディスクやフラッシュメモリであり、例えば、画像ファイルや画像データ、画像解析などの処理結果を保持するデータベースなどを記憶する。タッチセンサ105は、タッチパネル上でのユーザの接触動作を検知するためのセンサである。ディスプレイ106は、写真印刷アプリケーション上の印刷設定画面等のユーザインタフェース画面や、画像処理結果などを表示する。ディスプレイ106は、タッチセンサ105を含んでも良い。
加速度センサ107は、加速度を検出するためのセンサであり、携帯型情報端末100の傾き等を検出する。外部インタフェース(IF)108は、携帯型情報端末100をプリンタ114と接続する。携帯型情報端末100は、外部IF108により、プリンタ115での印刷を行うことができる。また、携帯型情報端末100は、外部IF110により、インターネット116を介してプリンタ115での印刷を行うこともできる。外部IF109は、携帯型情報端末100を外部撮像デバイス(カメラ)114と接続する。外部撮像デバイス113や内部撮像デバイス111により撮像された画像データは、所定の画像処理後、2次記憶装置104に格納される。外部IF110は、無線LANを備えており、携帯型情報端末100をインターネット116と接続する。携帯型情報端末100は、外部IF110により、インターネット116を介して外部の各種サーバ117から画像データ等を取得することができる。携帯型情報端末100の動作に必要な電源は、バッテリ112から供給される。上記のCPU101〜バッテリ112は、システムバス(制御バス/データバス)113を介して相互に接続されており、CPU101は各部を統括的に制御する。
携帯型情報端末は、USBや、有線LANのような有線接続を行うための外部IFを含んでも良い。また、無線LANの他に、Bluetooth(登録商標)や赤外線通信のような無線接続を行うための外部IFを含んでも良い。無線LANによる接続形態においては、例えば、デバイス同士が直接接続される場合や、不図示の無線LANルータを介して通信先のデバイスと接続される場合がある。
[ソフトウェア構成]
図2は、写真印刷アプリケーション(以下、アプリケーション)を実行するための、携帯型情報端末100上でのソフトウェア構成の一例を示す図である。図2に示すソフトウェアの各ブロックは、CPU101により実現される。本実施形態においては、携帯型情報端末100のソフトウェアは、スクリプト層201、ネイティブ層202、OS層203の3つの階層構造を有する。アプリケーションの機能は、図2に示す各層の連携により実現される。スクリプト層201は、HTML5、CSS(Cascading Style Sheets)3、Javascriptといったウェブ標準言語により、テキストデータで各種命令(スクリプト命令セット)が記述されている。各種命令とは、例えば、コンテンツの描画や画像の表示、動画の再生等の命令である。また、スクリプト層201は、それらのテキストデータを保持している。記述されたスクリプトは、アプリケーション実行環境上に存在するプロセッサ(CPU101)によりテキスト命令群が翻訳されて実行される。翻訳は、実行の度に命令文を一行ずつ動的に翻訳する形態や、アプリケーションを起動したときに翻訳する形態、アプリケーションを携帯型情報端末100にインストールしたときに翻訳する形態などで行われる。以下、スクリプト層201で処理することやスクリプト層201での内容を単にスクリプトとも呼ぶ。スクリプトの命令をデバイス(携帯型情報端末100)内で翻訳する際には、例えば、後述するネイティブ層202やOS層203のインタプリタの機能が使用される。なお、本実施形態においては、アプリケーションのUIの大部分がスクリプトで記述される。
ネイティブ層202は、アプリケーション実行環境以外で予め翻訳(コンパイル)された処理命令セットを実行する部分である。ネイティブ層202は、例えばC/C++といった高水準言語で記述されたコードが予めアプリケーション開発者のPCやサーバ上でコンパイルされ、CPU101が直接解釈できる命令の集合体となっている。以下、ネイティブ層202で処理することやネイティブ層202での内容、OS層203の機能をネイティブ層202から呼び出すことを含めて単にネイティブとも呼ぶ。なお、ネイティブ層202の他の実装系としてはJavaがある。Javaは、C/C++と類似の高水準言語であり、予めアプリケーション開発時の開発環境上で中間コードに翻訳されている。翻訳された中間コードは、各OSが備えるJava仮想環境上で動作する。本実施形態においては、そのような形態も、ネイティブ層203の形態の1つである。
OS層203は、デバイスのオペレーティングシステム(OS)に対応する。OS層203は、ハードウェア機能の使用をアプリケーションに提供する役割や、OS固有の機能を有する。OS層203はAPIを備えており、スクリプト層201やネイティブ層202からOS層203の機能を使用することができる。
本実施形態では、上記のスクリプト層201からネイティブの機能の呼び出しを可能にすることをバインディング(又はバインド)と呼ぶ。各種ネイティブ機能はAPIを備えており、スクリプト層201は、APIを呼び出すことによりネイティブ機能を使用することができる。そのようなバインディング機能は、通常、各種OSが標準的に備えている。本実施形態では、スクリプト層201とネイティブ層202を両方含むアプリケーションを特にハイブリッド型アプリケーションと呼ぶ。ハイブリッド型アプリケーションでは、UIの全て若しくは大部分をHTML5、CSS3、Javascriptといったいわゆるウェブ標準言語で記述し、ウェブ標準言語で記述された内容から、ネイティブ言語で記述された機能を利用することができる。このようなハイブリッド型アプリケーションを携帯型情報端末100上に実装することで、ウェブアプリケーションとネイティブアプリケーションの双方のメリットを実現するシステムを携帯型情報端末100上で構築することができる。
以下、図2の各ブロックについて説明する。
●画像データの取得
スクリプト層201の画像取得部204は、ネイティブ層202に対して画像データの取得を依頼する。取得依頼方法は複数可能であり、例えば、ファイルの存在場所そのものを指定する絶対パス指定方法や、ダイアログ表示を促す方法などがある。ネイティブ層202の画像読込部205は、画像取得部204からの取得依頼に基づき、画像データを保持している領域であるネイティブ層202の画像群206から画像データを取得する。画像群206からの画像データの取得方法は、画像取得部204の依頼方法によって異なる。画像読込部205は、例えば、ファイルの絶対パスに基づき直接に画像データを取得したり、ダイアログ表示での選択に基づき画像データを取得する。
ネイティブ層202のデータ変換部207は、ネイティブ層202のデータをスクリプト層201で利用可能なデータ形式に変換する。逆に、データ変換部207は、スクリプト層201から送られてきたデータをネイティブ層202で利用可能なデータ形式に変換する。スクリプト層201のデータ変換部208は、スクリプト層201のデータをネイティブ層202で利用可能なデータ形式に変換する。逆に、ネイティブ層202から送られてきたデータをスクリプト層201で利用可能なデータ形式に変換する。本実施形態では、例えば、ネイティブ層202の画像読込部205により取得された画像データは、スクリプト層201で利用可能なBASE64データ形式に変換されてスクリプト層201に渡される。
●画像データの読込/保存
ネイティブ層202のデータ保持部209は、画像読込部205により読み込まれた画像データや、画像処理部210により画像処理が実行された画像データを保持する。ここで、保持される画像データはRGB展開されている。従って、画像読込部205により読み込まれて保持された画像データに対して、直ちに画像処理が実行可能である。ネイティブ層202のデータ保存部216は、必要に応じて、データ保持部209に保持されている画像データを画像群206に格納する。また、データ保存部216は、アプリケーションが用意しているスタンプ画像や、テンポラリファイルの保存に用いられる場合もある。
●出力
スクリプト層201のレンダリング部219は、出力(表示/印刷)対象の画像のレンダリングについてのスクリプトを作成するためのブロックであり、コンテンツ描画部211、コンテンツ操作部212、画像処理制御部213を含む。本実施形態では、レンダリング部219でスクリプト作成途中の画像はディスプレイ106には表示されない。コンテンツ描画部211は、印刷対象のコンテンツを、ウェブ標準言語で記述する。スクリプト層201のコンテンツ操作部212は、画像の操作をスクリプトに反映する。画像の操作とは、例えば、画像の拡大、移動、回転である。コンテンツ描画部211による記述には、コンテンツ操作部212で操作された内容も反映される。ここで記述されたコンテンツのスクリプトは、後述するOS層203のインタプリタ218で解釈され、ディスプレイ106に表示される。画像処理制御部213は、画像処理に用いる補正パラメータ(例えば、輝度の補正値)と、補正対象となる画像を決定する。それらのデータは、必要に応じてスクリプト層201のデータ変換部208で、ネイティブ層202で利用可能なデータ形式に変換されてネイティブ層202に渡される。
ネイティブ層202の画像処理部210は、スクリプト層201の画像処理制御部213から指定された画像データに対して画像処理(輝度補正等)を実行する。その際、どのような画像処理を実行するかは、画像処理制御部213で設定された補正パラメータに従って決定される。画像データの指定については、例えば、スクリプト層201から画像データのパスを受け取る方法がある。
OS層203のタッチイベント部216は、ディスプレイ106へのユーザによるタッチに関する情報を取得する。タッチに関する情報とは、ディスプレイ上のタッチの検知、タッチされた位置情報などである。取得したデータは、ネイティブ層202を介してスクリプト層201のコンテンツ操作部212に送信される。例えば、ユーザがディスプレイ106上で所望のスタンプ画像を選択した情報は、タッチイベント部216により、ネイティブ層202を介してスクリプト層201のコンテンツ操作部212に送信される。
OS層203のインタプリタ218は、スクリプト層201で生成されたウェブ標準言語によるスクリプト命令を解釈・実行するブロックであり、画像の描画命令等はインタプリタ218により解釈され、ディスプレイ106への表示が実行される。また、インタプリタ218は、スクリプト層201で描画された印刷コンテンツを翻訳し、印刷解像度にレンダリングし、画像データをRGB画素値で出力する。図2では、インタプリタ218は、OS層203に構成されているが、ネイティブ層202に構成されても良い。
●プリンタとの通信
スクリプト層201のプリンタ制御部214は、レンダリング開始依頼、プリンタ検知の依頼、プリンタ設定画面の表示、プリント情報の生成及び送信を制御する。ここでのレンダリングとは、印刷に必要なビットマップデータを作成することをいう。プリンタ設定画面では、用紙のサイズ、用紙の種類、カラー/モノクロ印刷などの設定が可能である。ここで設定された項目に基づいて、ネイティブ層202のプリンタデータ生成部215は、プリント情報を生成する。
ネイティブ層202のプリンタデータ生成部215は、スクリプト層201のプリンタ制御部214からの依頼に基づき、プリンタ通信に必要なデータやコマンドを生成する。プリンタ通信に必要なデータとは、通信プロトコルに則ったデータであり、コマンドとは、印刷やスキャンなど、プリンタの動作を決定するためのデータである。OS層203のプリンタ通信部217は、プリンタデータ生成部215から受け取ったデータを、接続されているプリンタ115に送信するためのインタフェースである。
[全体フロー]
図3は、本実施形態における写真印刷処理の全体の手順を示すフローチャートである。図3の処理は、例えば、CPU101がROM102からプログラムをRAM103に読み出して実行することにより実現される。図10は、本実施形態におけるスクリプトで記述された写真印刷アプリケーション画面の一例を示す図である。
S301において、CPU101は、ユーザによる写真画像選択ボタン1001の押下(タッチ操作も含む。以下同様)を検出し、画像の選択を受け付ける。画像の選択を受け付けると、CPU101は、描画領域1206の全体に、選択された画像を表示する。
S302において、CPU101は、ユーザによる、スライドバー1202を用いた、画像処理時に利用する補正パラメータ(例えば、輝度補正値)を検出する。CPU101は、検出した補正パラメータに従って、画像に対して画像処理を実行し、描画領域1206の全体に画像を表示する。
S303において、CPU101は、ユーザによる、スタンプ追加ボタン1203の押下を検出すると、スタンプ画像一覧を表示する。そして、CPU101は、ユーザによる所望のスタンプ画像の選択を受け付け、描画領域1206上にスタンプ画像を追加・表示する。
S304において、CPU101は、ユーザによるスタンプ画像の特定操作を検出する。スタンプ画像の特定とは、ディスプレイ106上でタッチされた座標とスタンプ画像の座標とにより、スタンプ画像がタッチされたことを判断する処理である。スタンプ画像が特定されると、そのスタンプ画像は、操作受付状態となる。操作受付状態とは、スタンプ画像の操作(スワイプ等)に関する指示がされた場合、スタンプ画像がその指示で動作可能な(スワイプ可能な)状態のことをいう。操作受付状態のスタンプ画像が存在しない場合には、スタンプ画像操作に関する指示がされても何も起こらない。
S305において、CPU101は、ユーザによるスタンプ画像の操作を受け付ける。例えば、ユーザが図12のスライドバー1204を操作すると、CPU101は、その操作に応じて、操作受付状態となっているスタンプ画像を回転する。
S306において、CPU101は、ユーザによる、プリントボタン1205の押下を検出すると、プリントに必要な情報の設定UIをディスプレイ106に表示する。ここで、プリントに必要な情報とは、例えば、用紙サイズ、両面、モノクロ・カラー印刷などの情報である。図13に、プリンタの設定UIの一例を示す。
S307において、CPU101は、ユーザによる、設定完了ボタン1102の押下を検出すると、印刷に必要なビットマップデータを作成するレンダリングを開始する。CPU101は、描画領域1206に表示されている画像について、プリント解像度での画像データを作成する。
S308において、CPU101は、S305でプリント解像度で作成された画像データを、プリンタ制御のコマンドと共にプリンタ115に送信し、プリンタ115から印刷物を出力させる。
上記では、説明上、必要最小限のフローを記載しているが、特に上記の処理の流れに限定されるものではない。以下、各工程での詳細な動作を説明する。
[プリンタの選択]
最初に、ユーザによりアプリケーションが起動されると、アプリケーションは、接続可能なプリンタのディスカバリ処理(不図示)を行う。ディスカバリ処理とは、携帯型情報端末100が存在するLAN内において、接続可能なプリンタのIPアドレスを特定する処理のことである。携帯型情報端末100は、ディスカバリ処理で取得したIPアドレス(複数の場合もある)に対して、プリンタ115の属性情報(プリンタ情報)取得の要求コマンドを送信し、プリンタ115からの返信を得る。具体的には、ネイティブ層202において、各プリンタの情報を取得するためのコマンドが生成される。ここで、コマンドとはプリンタ115の動作を指定する命令であり、例えば、下記のようなXMLで記述される。
<?xml version="1.0" encoding="utf-8" ?>
<cmd xmlns:trans="http://www.trans/example/">
<contents>
<operation>GetInformation</operation>
</contents>
</cmd>
生成されたコマンドは、プリンタ115の通信プロトコルに従った形式で、例えば、Wi−Fi(登録商標)接続されたルータに対してブロードキャストされる。ここで、通信の方法は、Wi−Fiダイレクトや電話回線を利用するなどが考えられ、本実施形態では、プリンタ115の検出が無線LANルータ接続に限定されるものではない。
コマンドを送付した結果、ネイティブ層202は、OS層203のプリンタ通信部217を介してプリンタ115からの応答を受け取る。以下は、PrinterNameタグによって、プリンタ名称を取得する一例を示す。
<?xml version="1.0" encoding="utf-8" ?>
<cmd xmlns:trans="http://www.trans/example/">
<contents>
<PrinterName>PrinterA</PrinterName>
<ImageProcGrp>A</ImageProcGrp>
<ResolutionX>400</ResolutionX>
<ResolutionY>400</ResolutionY>
</contents>
</cmd>
また、ImageProcGrpタグによって、それぞれのプリンタが利用可能な画像処理グループを取得することもできる。また、ResolutionXおよびResolutionYは、このプリンタのエンジンが必要とする画像の解像度であり、例えば、dpiを単位として表される。
ネイティブ層202で取得された機種名は、スクリプト層201に渡されて、以下の仮想コードにより、プリンタのリストを表示することができる。
<form name=”frmPrinter”>
<select name=”selPrinter”>
</select>
</form>
<script type=”text/javascript”>
Function fAddPrinter(PrinterName, count){
var sObj=document.forms[“frmPrinter”].elements[“selPrinter”];
for (var i=0;i<count;i++){
var idx=sObj.length;
sObj.options[idx]=new Option(PrinterName[i]);
}
}
</script>
上記において、selectタグは、リストを表示するための記述であり、scriptタグ内に記述されたjavascriptコードによって、リストに取得したプリンタの名称(PrinterNameに配列として格納)を追加することができる。
図14は、スクリプト層201において生成した上記仮想コードがインタプリンタで解釈されて画面に表示されたプリンタのリスト1401を示す図である。ユーザがリスト1401上で所望のプリンタを選択すると、スクリプト層201は、何番目のリストを選択したかというIDを取得し、ネイティブ層202に渡す。プリンタが選択されると、後述する写真選択処理に移る。
[写真画像選択]
上述のように、ユーザによる写真画像選択ボタン1201の押下を検出することにより、S301の処理が開始する。図4は、S301の写真画像選択の処理を示すフローチャートである。図4のS401、S402、S409〜S411は、スクリプト層201により実行される処理であり、S403〜S408は、ネイティブ層202により実行される処理である。他のフローチャートにおいても同様に示す。
S401において、スクリプト層201の画像取得部204は、取得対象の画像データを識別するための一意なIDを生成する。IDは、数値や文字列など、スクリプト層201からネイティブ層202へ送信できる形式であればどのような形式でも良い。
S402において、スクリプト層201の画像取得部204は、ネイティブ層201にIDを渡すとともに画像選択を依頼する。その依頼の方法として、スクリプト層201からネイティブ層202固有の画像選択APIを直接呼び出すようにしても良い。ここで、ネイティブ層202固有の画像選択APIを直接呼び出せない場合には、ネイティブ層202にラッパーを用意しておいても良い。ラッパーとは、スクリプト層201から呼び出せる関数をネイティブ層202に予め用意しておき、ネイティブ関数内でネイティブ層202固有の関数を呼び出す方法である。また、画像選択APIは、IDを例えば引数として渡す仕組みを備えている。そのような構成により、スクリプト層201は、ネイティブ層202へIDを渡すことができる。
S403において、ネイティブ層202では、デバイス固有の画像選択UIがディスプレイ106に表示されるよう表示制御が行われる。画像読込部205は、ユーザによる、表示された画像選択UI上での画像の選択を受け付ける。画像の選択は、脱着可能な記憶媒体内の画像の選択でも良いし、携帯型情報端末100のカメラ機能が用いられて撮影された画像データであっても良い。
S404において、ネイティブ層202の画像読込部205は、選択された画像に対応する画像データを画像群206から取得する。画像データの取得は、例えば、画像ファイルのダウンロードやコピーによって行われる。また、ファイルオープンは、ネイティブ層202の使用言語に応じたものにより行われる。
S405において、ネイティブ層202のデータ保持部209は、取得した画像データをRGB展開して保持する。本実施形態において、RGBデータで保持されているが、これに限定されるものではない。例えば、ビットマップデータであれば、JPEG(Joint Photography Expert Group)、PNG(Portable Network Graphics)、RGBA形式などで保持するようにしても良い。ここで、RGBA形式とは、画像データのRGB(赤、緑、青)に、透明度としてAを組み合わせたデータ形式である。
S406において、ネイティブ層202のデータ保持部209は、展開されたRGBデータをS403で受信したIDと関連付けて記憶する。関連付けの方法として、例えば、IDとRGBデータを持つオブジェクトを作成することにより、IDによるRGBデータの特定を可能にしても良い。また、IDとRGBデータとの対応付けは、IDとRGBデータと対にすることに限定されるわけではなく、例えば、IDとRGBデータのパスとを関連付ける方法を用いてもよい。その他にも、RGBデータの先頭アドレスや、RGBデータを呼び出す関数と関連付ける方法などが用いられても良い。
S407において、S405で取得したRGBデータに基づいて、スクリプト層201で対応している形式に変換可能な画像データが生成される。本実施形態においては、例えばJPEG形式の画像データが生成される。RGBデータからJPEGデータへの変換には、OSが有するエンコーダが用いられる。
S408において、ネイティブ層202のデータ変換部207は、JPEGデータをBASE64データに変換する。これは、スクリプト層201では、RGBデータ配列やJPEGのバイナリデータをそのまま利用できず、スクリプト層201が利用可能な形式にデータを変換する必要があるためである。本実施形態では、JavaScript(登録商標)が用いられている場合には、スクリプト層201で扱う画像データはBASE64形式であるとする。BASE64とは、バイナリデータを文字列データとして扱うためのエンコード方式である。
S409において、スクリプト層201のデータ変換部208は、ネイティブ層202のデータ変換部207から、S408で変換されたBASE64データを受け取る。そして、BASE64データを表示するための領域がRAM103に確保される。本実施形態では、メモリの確保のために、例えば、HTMLのCanvas機能が用いられ、画像の描画は、Canvasの持つContextオブジェクトのAPIにより行われる。
本実施形態では、このように、スクリプト層201がネイティブ層202に画像データの取得を依頼し、ネイティブ層202が取得した画像データをUI表示に用いる。そのような構成により、画像データがCanvasで取得された場合でも、アプリケーションの実行の際に、その画像データに基づく表示を行うことができる。
S410において、スクリプト層201の画像処理制御部213は、補正パラメータを生成し、その補正パラメータを初期化する。補正パラメータとは、S302の画像処理の内容を決定するパラメータ群を保持するオブジェクトである。ネイティブ層202でどのような画像処理が実行されるかは、補正パラメータに応じて決定される。JavaScriptでは、例えば、下記のような補正パラメータが生成される。
var CorrectionParam = function(){
this.brightness = 10;
}
上記の補正パラメータは、CorrectionParamオブジェクトの中に、明るさ補正用にbrightnessという変数名と、brightnessには10という値が格納されているということを表している。説明上、補正パラメータは、明るさ補正用のみとして示しているが、その他の補正処理用のパラメータを追加することにより、画像処理の種類を増やすことができる。
S411において、スクリプト層201の画像処理制御部213は、描画領域1206での描画するデータにネイティブ層202から受け取ったBASE64データを指定する。これにより、OS層203のインタプリタ218がスクリプトを解釈し、描画領域1206に画像を表示することができる。下記に、描画領域1206にBASE64データを反映させるためのコードの一例を示す。
var base64Data = ネイティブからのBASE64データ
var canvas = document.createElement("canvas");//画像の描画領域確保
canvas.setAttribute("width", 100);//描画領域の大きさ設定
canvas.setAttribute("height", 100);
canvas.setAttribute(“id”, “ImageID”);//canvasにIDをつける
var context = canvas.getContext("2d");//描画領域に描画するAPIを持つオブジェクトの生成
var img = new Image();//Imageオブジェクトの生成
img.src = base64Data;//画像のURIを受け取ったBASE64データとする
img.onload = function(){//画像のロードが終わってから処理を開始する
context.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height);//contextオブジェクトのメソッドを用いて画像を描画領域に描画
document.getElementById("div").appendChild(canvas);}
本実施形態では、Canvasが何層にもなるレイヤ構造を用いている。それらのCanvasは、描画/移動/拡大などの操作が特定されると、divで指定される描画領域1206に対して順次追加されていく。通常、Canvasは1枚の画像として扱われるので、Canvasに写真画像を描画した後にスタンプ画像などを追加すると、スタンプ画像と合わせて1枚の画像とされる。それに対して、本実施形態では、レイヤ構造を用いてCanvasを重ねて表示するので、ユーザに対して1枚の画像のように表示するが、実際の描画物はそれぞれ独立したものとなっている。例えば、HTMLのDOM(Document Object Model)のように、divの領域内にCanvasオブジェクトが複数存在する形態である。以下に一例を示す。
<div width = 100 height = 100>
<canvas id=”ImageID” width=100 height=100 style="position:absolute;left:0px; top:0px;"></canvas>
<canvas id=”Stamp” width=10 height=10 style="position:absolute;left:10px; top:10px;"></canvas>

</div>
1つ目のCanvasは、縦幅100、横幅100のdiv領域に対して、縦幅100、横幅100で追加されている。つまり、表示領域全体に対してCanvasが重なっているということであり、写真画像は全体表示される。2つ目のCanvasは、縦幅10、横幅10の大きさ、つまり、div左上の頂点を基準とした時の(10,10)の座標に追加されている。それぞれのCanvasは独立しており、また、それぞれに一意なIDが指定されている。スクリプトによる操作や、特定のCanvasの情報を取得する際には、対応するIDが用いられる。例えば、2つ目のCanvasの縦幅は、以下の操作で取得することができる。
var width = document.getElementById(“Stamp”).width;
[画像処理]
ユーザによるスライドバー1202の設定を検出することにより、図3のS302の処理が開始する。図5は、S302の画像処理を示すフローチャートである。
S501において、スクリプト層201の画像処理制御部213は、S410で生成された補正パラメータの値(例えば、brightness。以下同様とする。)を、スライドバー1202で設定された値に更新する。
S502において、スクリプト層201の画像処理制御部213は、インジケータを起動してディスプレイ106に表示するよう処理する。ここで、インジケータとは、データ処理中にディスプレイ106に表示される、作業状態を表すアイコンである。
S503において、スクリプト層201のデータ変換部208は、補正パラメータをネイティブで利用可能なJSON文字列に変換する。これは、補正パラメータは上記のようにオブジェクト形式であり、ネイティブ層202では解釈することができないからである。変換されたJSON文字列は、S401で生成された画像データを識別するためのIDと共にネイティブ層202へ渡される。
S504において、ネイティブ層202の画像処理部210は、文字列として受け取ったJSONデータをパース(解析)する。パースには、OSに備えられているパーサーが用いられる。ネイティブ層202の画像処理部210は、パースにより、補正パラメータ内のbrightnessの値を取得する。
S505において、ネイティブ層202の画像処理部210は、スクリプト層201から送信されたIDに基づいて、S405でRGB展開された画像データ(RGBデータ)を特定する。前述のように、IDと画像データとの対応付けは、IDと画像データとを対にすることに限定されるわけではなく、例えば、IDと画像データのパスとを関連付ける方法により行われても良い。また、IDと、画像データの先頭アドレスや画像データを呼び出す関数などを関連付ける方法により行われても良い。
S506において、ネイティブ層202の画像処理部210は、取得した補正パラメータから実行すべき画像処理を決定し、S505で特定された画像データに対して補正パラメータに対応した画像処理を行う。本実施形態では、輝度補正のパラメータにより、全ての画素のRGB値に10が加算されるとする。
ここで、補正パラメータに他の情報を追加することにより、画像処理の種類を増やすようにしても良い。例えば、公知のモノクロ変換、公知のセピア色変換、ImageFix、RedeyeFix、SmartSkinなどの画像処理を追加するようにしても良い。ImageFixとは、写真画像を、人物顔検出やシーン解析を用いて自動で解析し、適切な明るさやホワイトバランス調整を行う処理である。また、RedeyeFixとは、画像中から自動で赤目画像を検出して補正する処理である。また、SmartSkinとは、写真画像から人物の顔を検出して、その顔の肌領域を好適に加工する処理である。また、画像処理は、OS層203が提供する機能により実行されても良い。また、図15に示すように、取得した補正パラメータから実行可能な複数の画像処理をプルダウンメニュー1501を表示し、ユーザ選択を受け付けるようにしても良い。
S507において、S506で画像処理が実行された画像データに基づいて、スクリプトで対応しているフォーマットに変換可能な画像データが生成される。本実施形態においては、例えばJPEGの画像データが生成される。
S508において、ネイティブ層202の画像処理部210は、スクリプト層201にインジケータの停止を依頼する。これは、例えば、ネイティブ層202から、スクリプト層201で定義されているインジケータ停止の関数を呼び出すことで行われる。
S509において、スクリプト層201の画像処理制御部213は、インジケータを停止させてディスプレイへの表示を停止する。一方、S510において、ネイティブ層202のデータ変換部207は、JPEGデータをBASE64データに変換し、スクリプト層201に送信する。
S511において、スクリプト層201のデータ変換部208は、ネイティブ層202からS508で変換されたBASE64データを受け取る。その後、スクリプト層201の画像処理制御部213は、描画領域1206での描画するデータにネイティブ層202から受け取ったBASE64データを指定する。これにより、OS層203のインタプリタ218がスクリプトを解釈し、描画領域1206に画像処理が実行された画像が表示される。
本実施形態では、スライドバー1202の変化によって画像処理が開始されると説明したが、その形態に限定されるものではない。例えば、画面上にプラスボタン、マイナスボタンが配置され、ユーザがそのボタンを押すごとに明るさが調整されるという形態でも良い。他にも、画像の右半分がタッチされたら明るさを増す、左半分がタッチされたら暗くするなど、ユーザのタッチイベントと連動させた形態でも良い。また、ユーザ操作で補正パラメータだけ変化させておき、画像処理の実行指示を受け付けたときに、全ての画像処理が一括して行われるという形態でも良い。
S506における画像処理の決定は、Javascriptからバインド機能によりOSが通常備えているシステム関数を呼び出し、システム関数からCPU101のクロック速度Clk[MHz]を取得することにより行われても良い。例えば、クロック速度Clkから、予め定められた閾値Th1を用いて画像処理グループを特定する。グループ特定のための仮想コードの一例を以下に示す。
If ( Clk > Th1 ) ImageProcGrp = “A”;
Else ImageProcGrp = “B”
なお、上記の処理は、通常、アプリケーションが起動した際に、スクリプト層201において行われる。画像処理グループが特定されると、スクリプト層201において、以下に一例と示すコードにより、利用可能な画像処理の表示用スクリプトが作成される。
<form name=”frmIProc”>
<select name=”selIProc”>
</select>
</form>
<script type=”text/javascript”>
Function fAddImageProc(Grp){
var sObj=document.forms[“frmIProc”].elements[“selIProc”];
if( Grp =”A” ){
var idx=sObj.length;
sObj.options[idx]=new Option(“ImageFix”);
var idx=sObj.length;
sObj.options[idx]=new Option(“RedEyeFix”);
var idx=sObj.length;
sObj.options[idx]=new Option(“SmartSkin”);
var idx=sObj.length;
sObj.options[idx]=new Option(“Mono”);
var idx=sObj.length;
sObj.options[idx]=new Option(“Sepia”);
}
Else if (Grp=”B”){
var idx=sObj.length;
sObj.options[idx]=new Option(“Mono”);
var idx=sObj.length;
sObj.options[idx]=new Option(“Sepia”);
}
}
</script>
上記のスクリプトにおいては、CPU101のクロック数がある閾値より大きく、複雑な画像処理を実行可能と判断された場合には(Grp=A)、より多くの画像処理機能を選択可能としている。逆に、CPU101のクロック数がある閾値以下の場合には、処理としては負荷の軽いモノクロ変換、セピア変換という処理のみが選択可能となる。上記のスクリプトは、OS層203のインタプリタ218で翻訳されて画面上に描画される。図15は、その描画された様子を示す図である。
ユーザが所望の画像処理機能を選択すると、HTML機能により、選択された画像処理IDを判別することができる。画像処理IDは、ネイティブ層202の画像処理部210に伝達され、選択した機能に相当する画像処理が適用される。
[スタンプ画像追加]
ユーザによるスタンプ追加ボタン1203の押下を検出し、ハートスタンプ画像1208の選択を検出することにより、S303の処理が開始する。図6は、S303のスタンプ画像追加の処理を示すフローチャートである。
S601において、スクリプト層201の画像取得部204は、スタンプを識別するための一意なIDを生成する。IDは、数値や文字列など、スクリプト層201からネイティブ層202へ送信できる形式であればどのような形式でも良い。
S602において、スクリプト層201の画像取得部204は、S601で生成されたIDと、スタンプ画像として用いられる画像の絶対パスとをネイティブ層202に送信し、画像取得を依頼する。
S603において、ネイティブ層202の画像読込部205は、スクリプト層201から受け取った画像の絶対パスに基づいて、デバイス固有のAPIにより画像データを取得する。
S604において、ネイティブ層202のデータ保持部209は、取得した画像データをRGB展開して保持する。
S605において、ネイティブ層202のデータ保持部209は、S406と同様に、RGB展開された画像データと、S602で受信したIDとを関連付けて記憶する。
S606において、S604で取得したRGBデータに基づいて、スクリプトで対応しているフォーマットに変換可能な画像データが生成される。本実施形態においては、例えばJPEGの画像データが生成される。RGBデータからJPEGデータへの変換には、OSが有するエンコーダが用いられる。
S607において、ネイティブ層202のデータ変換部207は、JPEGデータをBASE64データに変換し、スクリプト層201に送信する。
S608において、スクリプト層201のデータ変換部208は、ネイティブ層202からS607で変換されたBASE64データを受け取る。そして、BASE64データを表示するための領域がRAM103に確保される。メモリの確保のためには、例えば、HTMLのCanvas機能が用いられる。
S609において、スクリプト層201の画像処理制御部213は、オブジェクトパラメータを生成し、そのオブジェクトパラメータを初期化する。オブジェクトパラメータとは、描画の際に用いられるパラメータを保持するオブジェクトである。JavaScriptでは、例えば、下記のようなオブジェクトパラメータが生成される。
var ObjectParam = function(){
this.posX = 10;
this.posY = 10;
this.width = 100;
this.height = 100;
this.ImageData = BASE64Data;
}
このオブジェクトパラメータは、ObjectParamオブジェクトの中に、基準点からのx座標を示すposX変数名が含まれ、posXには10という値が格納されているということを表している。ここで、基準点とは、描画領域1206の左上の座標である。同様に、posYは、描画領域1206の左上を基準点としたときのy座標、widthはスタンプ画像の描画領域の横幅、heightは描画領域の縦幅を表している。また、BASE64Dataは、ネイティブ層202から受け取った画像データである。
つまり、本実施形態では、オブジェクトパラメータが描画物オブジェクトに対応する。本実施形態では説明上、オブジェクトパラメータとして、描画物のサイズ、位置、画像データを示している。しかしながら、その他のパラメータ(回転角度、平行移動量、拡大倍率など)を追加して、描画、レンダリング、オブジェクト操作時に利用できるようにしても良い。また、描画オブジェクトに対する情報保持の方法も、本実施形態に限定されるものではない。
S610において、スクリプト201の画像処理制御部213は、描画領域1206で描画するデータとして、ネイティブ層202から受け取ったBASE64データを指定する。これにより、OS層203のインタプリタ218がスクリプトを解釈し、S609で初期化されたオブジェクトパラメータに基づいて、描画領域1206に画像を表示することができる。
本実施形態では説明上、スタンプ画像が1つのみであるが、スタンプ画像を複数個扱うようにしても良い。また、本実施形態では、スタンプ画像として予め用意した画像データを用いているが、CanvasのContextオブジェクトを用いて描画物をスクリプトで生成する方法を用いても良い。その場合には、S602において、Contextオブジェクトを用いて生成された描画物がネイティブ層202に送信され、データ保持部209は、その描画物をRGBデータとして保持する。
[スタンプ画像の特定]
S303でスタンプ画像が追加された後、ユーザによるディスプレイ106上をタップ操作を検出することにより、S304のスタンプ画像の特定処理が開始する。ここで、タップ操作とは、ユーザがディスプレイ106上を指で押すタッチ操作のことをいう。これは、PCで言うところの「クリック」に相当する。
図7は、スタンプ画像の特定の処理を示すフローチャートである。
S701において、ネイティブ層202の画像処理部210は、OS層203のタッチイベント部216を介してタップされた座標を取得し、スクリプト層201に送信する。
S702において、スクリプト層201のコンテンツ操作部212は、ネイティブ層202から送られてきた座標と、S609で生成されたオブジェクトパラメータの情報とから、スタンプ画像がタッチされたかを判定する。ここで、スタンプ画像のオブジェクトパラメータは初期値のままであるので、スタンプ画像は、左上の頂点座標を(10,10)、右下の頂点座標を(110,110)とする正方形の領域に描画されていることとなる。つまり、S701で送られてきたx座標及びy座標が、その正方形の領域の範囲内であれば、スタンプ画像はタッチされたと判定する。例えば、S701で送信されたx座標から、描画領域1206のx座標分を差し引いた値が0〜100の範囲、かつ、送信されたy座標から、描画領域1206のy座標分を差し引いた値が0〜100の範囲であれば、タッチされたと判定する。スタンプ画像が複数個ある場合には、より上層に表示されているスタンプ画像から順番に判定を行っていき、スタンプ画像の特定がなされた時点で判定処理を終了する。スタンプ画像がタッチされたと判定された場合、スタンプ画像は、スタンプ画像の操作を受け付ける状態となる。
S703において、スクリプト層201のコンテンツ操作部212は、スタンプ画像を操作受付状態にする。ここで、操作受付状態とは、スタンプ画像の操作(スワイプ等)に関する指示がされた場合、スタンプ画像がその指示で動作可能な(スワイプ可能な)状態のことをいう。操作受付状態のスタンプ画像が存在しない場合には、スタンプ画像操作に関する指示がされても何も起こらない。また、操作受付状態とされたスタンプ画像のIDは、注目スタンプ画像IDとして、一時的にスクリプト層201で記憶しておく。そのことにより、スクリプト層201は、ネイティブ層202で記憶されているスタンプ画像を一意に特定することができる。
[スタンプ画像の操作]
ユーザによるスライドバー1204の操作を検出することにより、S305の処理が開始する。図8は、S305のスタンプ画像の操作処理を示すフローチャートである。
S801において、スクリプト層201のコンテンツ操作部212は、スタンプ画像のオブジェクトパラメータの値(例えばrotate)を、スライドバー1204で設定された値に更新する。
S802において、スクリプト層201のコンテンツ操作部212は、オブジェクトパラメータを用いて、S703で操作受付状態となったスタンプ画像を描画領域1206に再描画する。例えば、スタンプ画像の描画を、HTMLのCanvasで行う場合には、Canvasの持つContextオブジェクトのrotateメソッドを用いることで、Canvas内の画像を回転することができる。
上記では、スタンプ画像の操作は回転を説明したが、拡大・縮小、平行移動などの操作でも良い。また、写真画像に対してオブジェクトパラメータを付加する構成とすれば、スタンプ画像の操作と同様の操作が可能となる。
[プリンタ設定]
ユーザによるプリントボタン1205の押下を検出することにより、S306の処理が開始する。図9は、S306のプリンタ設定の処理を示すフローチャートである。
S901において、スクリプト層201のプリンタ制御部214は、ネイティブ層202にプリンタ情報の取得を依頼する。依頼の方法として、例えば、バインディング機能によりスクリプト層201からネイティブ層202固有のAPIを呼び出す。その場合、ネイティブ層202には、スクリプト層201から直接呼び出せる関数、もしくはその関数を間接的に呼び出すいわゆるラッパーを予め用意しておく。例えば、GetPrinterInfoというネイティブ関数を用意しておき、スクリプト層201からその関数を呼び出す。
一般的に、機密情報の保証が難しい等のセキュリティ上の制限のために、スクリプト層201から外部の機器と直接通信することはできない。そのため、本実施形態では、スクリプト層201は、一旦、ネイティブ層202へ依頼することにより、ネイティブ層202を介して外部の機器と通信を行う。
S902において、ネイティブ層202のプリンタデータ生成部215は、対応する関数が呼び出されると、プリンタ115の検出、いわゆるディスカバリを行う。ここでは、通信可能なプリンタ115の検出を行うために、Bonjourなどのプロトコルが用いられる。プリンタ115の検出は、例えば、同じ無線LANルータで接続されているプリンタにおいて行われる。
S903において、ネイティブ層202のプリンタデータ生成部215は、ブロードキャストやマルチキャスト等の方法で応答のあったプリンタ115のIPアドレスを記憶する。
S904において、ネイティブ層202のプリンタデータ生成部215は、S703で応答のあったプリンタ115のIPアドレスへプリンタ情報の提供を要求するためのコマンドを生成する。応答のあったプリンタが複数の場合には、プリンタデータ生成部215は、全てのプリンタに対して情報の提供を要求する。コマンドとは、プリンタの動作を指定する命令であり、例えば、XML(Extendable Markup Language)により下記のように記述される。
----------------------------------------------
01: <?xml version="1.0" encoding="utf-8" ?>
02: <cmd xmlns:trans="http://www.xxxx/yyyyy/">
03: <contents>
04: <operation>GetPrinterInfo</operation>
05: </contents>
06: </cmd>
----------------------------------------------
上記各行の左側に書かれている「01:」などの数値は説明を行うために付加した行番号であり、本来のXML形式のテキストには記述されない。
1行目はヘッダであり、XML形式で記述していることを表している。
2行目のcmdは、コマンドの開始を意味する。xmlnsで名前空間を指定し、コマンドの解釈の定義を指定している。なお、6行目の</cmd>は、コマンドの終了を示している。
3行目は以降に内容を記述する宣言であり、5行目はその終了を示している。
4行目には要求する命令が記述されており、<operation>と</operation>の間に実際の命令文言が存在する。命令文言であるGetPrinterInfoは、外部デバイスであるプリンタ115の情報を取得する命令である。例えば、プリンタ115が対応している用紙種類、サイズ、縁なし印刷機能の有無、印刷品位、などのプリンタ情報を提供するよう要求する内容が記述されている。
なお、上記のコマンド生成は、予めROM102などに記憶した固定のテキストを読み込むようにしても良い。また、コマンドは、XMLなどのテキスト形式に限らず、バイナリ形式で記述され、それに従ったプロトコルで通信されるようにしても良い。生成されたコマンドは、送信先のプリンタが対応しているプロトコルに従った形式で、OS層203のプリンタ通信部217を介してプリンタ115へ送信される。プリンタ115との通信の方法は、上記に限られず、例えば、Wi−FiダイレクトやBluetooth、赤外線通信、電話回線、有線LAN、USBを用いた接続でも良い。
上記では、ネイティブ層202でコマンドの生成が行われると説明したが、スクリプト層201でコマンドの生成が行われるようにしても良い。その場合、スクリプト層201で上記のXML形式の命令文が作成されてネイティブ層202へ渡される。その後、上記と同様に、通信プロトコルに従った形式でプリンタ115のIPアドレスへ送信される。
上記のコマンドを受信したプリンタ115は、プリンタ情報を通信プロトコルに従ってXML形式でネイティブ層202へ送信する。以下、プリンタ情報の一例を示す。
----------------------------------------------
01: <?xml version="1.0" encoding="utf-8" ?>
02: <cmd xmlns:trans="http://www.xxxx/yyyyy/">
03: <contents>
04: <device id=”Printer001” />
05: <mode = 1>
06: <media>GlossyPaper</media>
07: <size>A4</size>
08: <quality>1</quality>
09: <border>no</border>
10: </mode>
11: <mode = 2>
〜中略〜
</mode>
<mode = 3>
〜中略〜
</mode>
〜中略〜
</contents>
</cmd>
----------------------------------------------
1行目はヘッダであり、XML形式で記述していることを表している。
2行目のcmdは、コマンドの開始を意味する。xmlnsで名前空間を指定し、コマンドの解釈の定義を指定している。なお、最下行の</cmd>はコマンドの終了を示している。
3行目は以降に内容を記述する宣言であり、下の</contents>までその内容が続く。
4行目はデバイスIDを示し、そのプリンタの機種名が「Printer001」であることを表している。
5行目以降は、各モードについて記述されている。<mode>から</mode>まで、対応するモードの情報が記述されている。5行目では、モードの番号は1である。以降の<media>は印刷用紙の種類、<size>は用紙サイズ、<quality>は印刷品位、<border>は縁あり/なしの情報がそれぞれ記述されている。
11行目以降は、他のモードであるモード2についての情報が記述されている。このように、プリンタの機種名と、そのプリンタが対応している全ての印刷モードがXML形式で記述されている。なお、プリンタ情報の記述方法は、これに限定されず、例えば、タグ形式でないテキストや、バイナリ形式などであっても良い。また、上記ではプリンタの印刷機能の情報を受け渡ししているが、それに限定される事ではない。例えば、プリンタが処理可能な画像処理や解析処理、静かに印刷するモードの有無、メモリカードの利用有無、インク残量などのステータスなどの情報でも良い。画像処理の例としては、モノクロやセピア、彩度強調などの色変換、複数画像のレイアウト、ホワイトバランス補正、ノイズ除去、その他自動で写真を好ましい色や輝度に補正する処理などが挙げられる。
S905において、ネイティブ層202のプリンタデータ生成部215は、OS層203のプリンタ通信部217を介してプリンタ115からプリンタ情報を受け取る。そして、プリンタデータ生成部215は、受け取ったプリンタ情報から、全てのモードにおける印刷用紙の種類、サイズ、印刷品位、縁あり/なしの項目と項目数を取得する。
S906において、ネイティブ層202のプリンタデータ生成部215は、プリンタ情報をスクリプト層201が解釈可能な形式でスクリプト層201へ送る。例えば、ネイティブ層202のプリンタデータ生成部215は、受け取ったXML形式で送ったり、若しくは、タグなしのテキスト形式に変えて送る。また、スクリプト層201から特定のネイティブ関数を呼び出す毎に戻り値として情報を送信するようにしても良いし、ネイティブ関数に取得するモードなどの引数を渡しておき、戻り値として情報を送信するようにしても良い。また、JSON文字列を用いた受け渡しや、データ変換部207及び208により、BASE64などの文字列で受け渡しを行っても良い。
S907において、スクリプト層201は、受け取ったプリンタ情報に基づいて、表示画面を形成してディスプレイ160に表示するよう処理する。ここで、接続可能なプリンタが複数ある場合には、スクリプト層201は、複数のプリンタ名をユーザに選択可能に表示するよう処理する。なお、プリンタの選択は、上記に限られず、例えば、一番早く応答してきたプリンタや、より機能が多いプリンタ、印刷ジョブが混んでいないプリンタ、などに基づいて選択されるようにしても良い。
S908において、スクリプト層201は、印刷用紙の種類・サイズ、印刷品位、縁あり/なし、などを選択させる印刷設定画面をディスプレイ160に表示するよう処理する。印刷設定画面の形成方法の一例として、以下に、HTML/JavaScriptの記述を示す。
------------------------------------------------
<!DOCTYPE html>
<head>
<title>印刷設定 </title>
<script>
<!-- 用紙サイズ -->
var PaperSizeNum = GetPaperSizeNum();
var p = document.getElementById("PaperList");
var i;
for(i=0; i<PaperSizeNum; i++){
p.options[i] = new Option(GetPaperSize(i), GetPaperSize(i));
}
<!-- 用紙種類-->
var MediaTypeNum = GetMediaTypeNum();
var m = document.getElementById("MediaList");
var j;
for(j=0; j<MediaTypeNum; j++){
m.options[i] = new Option(GetMediaType(j),GetMediaType(j));
}
<!-- 印刷品位 -->
var QualityNum = GetQualityNum();
var q = document.getElementById("QualityList");
var k
for(k=0; k< QualityNum; k++){
q.options[i] = new Option(GetQuality(k), GetQuality(k));
}
<!-- 縁あり/なし-->
var BorderNum = GetBorderNum();
var b = document.getElementById("BorderList");
var l;
for(l=0; l<BorderNum; l++){
b.options[i] = new Option(GetBorder(l),GetBorder(l));
}
<!-- 印刷関数-->
function printer() {
SetPrint(document.getElementById("PaperList").value,
document.getElementById("MediaList").value,
document.getElementById("QualityList").value,
document.getElementById("BorderList ").value);
}
</script>
</head>
<!-- 表示部 -->
<body>
用紙サイズ:<select id="PaperList"></select><br />
用紙種類: <select id="MediaList"></select><br />
印刷品位: <select id="QualityList"></select><br />
縁なし: <select id="BorderList"></select><br />
<br />
<button id="btn1" onclick="printer()">印刷設定完了</button>
</body>
</html>
------------------------------------------------
上記のGetPaperSizeNum()、GetMediaTypeNum()、GetQualityNum()、GetBorderNum()はネイティブ関数であり、それぞれの項目がいくつあるかを取得する機能を備える。例えば、プリンタが対応している用紙サイズがA4、A5、B5、L判の4種類の場合、GetPaperSizeNum()は4を返す。
GetPaperSize(n)、GetMediaType(n)、GetQuality(n)、GetBorder(n)もネイティブ関数であり、引数nの値番目の文字列を返す。例えば、用紙サイズを返す関数のGetPaperSize(0)の返り値は「A4」であり、GetPaperSize(1)の返り値は「A5」である。これらの値は、ネイティブ層202が、プリンタ115からOS層203を介して送られてきた情報から取得する。
GetPaperSizeV(n)、GetMediaTypeV(n)、GetQualityV(n)、GetBorderV(n)もネイティブ関数であり、引数nの値番目の値を返す。例えば、用紙種類のテキストを返す関数のGetMediaTypeT(0)の返り値は「光沢紙」のように、表示してユーザに示す文言である。対してGetMediaTypeV(0)の返り値は「GlossyPaper」と、プリンタ115が解釈できる文言となっている。また、これらの文言は、プリンタ115から送られてきた情報と結び付けてネイティブ層202が決定する。例えば、プリンタ115から送られてきた情報より取り出した値が「GlossyPaper」であった場合、表示するテキストは「光沢紙」と決定する。決定の方法として、ネイティブ層202は、これらの対応表を予め保持しておき、その対応表に従ってテキストを決定すれば良い。
なお、上記では例として用紙サイズ、用紙種類、印刷品位、縁あり/なしの設定を行う仕様であるが、これに限定されず、他の設定、例えば、両面/片面、カラー/モノクロ、画像補正のオン/オフ等があっても良い。また、前述のように印刷機能のみではなく、プリンタ115が処理可能な画像処理や解析処理、静かに印刷するモードの有無、メモリカードの利用有無、インク残量などのステータスなどの情報を表示しても良い。
上記の例のように取得した情報に基づきWebレンダリングエンジンを用いて、例えば、図13に示す印刷設定画面1301のようなユーザインタフェースが実現される。つまり、本実施形態では、スクリプト層201は、ネイティブ層202を介して外部のプリンタ115にプリンタ情報を要求し、ネイティブ関数を用いて取得した情報に基づいて印刷設定画面をディスプレイ106に表示する。なお、上記HTMLは、スクリプト層201とネイティブ層202のいずれで作成するようにしても良い。図13に示すように、用紙サイズなどはプルダウンメニューになっており、ユーザの項目を選択するタッチ操作を受け付けることができる。
設定完了ボタン1102の押下を検出すると、S909において、スクリプト層201のプリンタ制御部214は、S708でユーザが選択した各プリント情報を、ネイティブ層202へ送信する。上記HTMLの例にあるSetPrint()は、取得したプリンタ設定情報を引数としてネイティブ関数を呼び出している。上記の例では用紙サイズ、用紙種類、印刷品位、縁あり/なしの各設定を文字列としてネイティブ層202へ渡している。
S910において、ネイティブ層202のプリンタデータ生成部215は、スクリプト層201から送信されたプリント情報を取得する。プリンタデータ生成部215は、取得したプリント情報に基づいて、プリンタの通信プロトコルに従って印刷コマンドを生成し、OS層203のプリンタ通信部217を介してプリンタ115へ送信する。
[レンダリング]
ユーザによる印刷設定画面1301の設定完了ボタン1302の押下を検出することにより、S307の処理が開始する。図10は、S307のレンダリング処理を示すフローチャートである。
S1001において、スクリプト層201のプリンタ制御部214は、インジケータの起動をOS層203に依頼する。S1002において、OS層203は、インジケータをディスプレイ106に表示する。
S1003において、スクリプト層201のプリンタ制御部214は、S909で設定されたプリント情報に基づいて、印刷する用紙サイズに対応する出力サイズを決定し、その出力サイズをOS層203に渡す。
S1004において、OS層203は、受け取った出力サイズに対応する出力画像領域をRAM103に確保する。ここで、出力画像領域とは、例えばCanvas領域である。
S1005において、スクリプト層201のプリンタ制御部214は、OS層203に対して写真画像の描画を依頼する。その際、プリンタ制御部214は、写真画像がS1004で確保された出力画像領域全体に描画されるように依頼する。画像の描画は、Canvasであれば、ContextオブジェクトのdrawImageメソッドを用いて行われる。また、写真画像データは、オブジェクトパラメータのImageDataで表される。
S1006において、OS層203のインタプリタ218は、描画依頼されたスクリプトを解釈し、写真画像のレンダリングを行う。S1007において、OS層203は、S1004で確保された出力画像領域に対して、レンダリング後の画像データを格納する。ここで、図10のS1007の「出力画像領域に反映」とは、上記のようにS1004で確保された出力画像領域(メモリ)に変更を加えることであり、ディスプレイ106上に画像を表示することではない。
S1008において、スクリプト層201の画像処理制御部213は、スタンプ画像について、オブジェクトパラメータによるレンダリング条件の変更をスクリプトで記述する。レンダリング条件の変更とは、例えば、スタンプ画像の回転やリサイズである。
S1009において、スクリプト層201の画像処理部213は、S1008で設定されたレンダリング条件とともに、スタンプ画像の描画をOS層203に依頼する。
S1010において、OS層203は、S1008で設定されたレンダリング条件に従って、スタンプ画像のレンダリングを行う。つまり、本実施形態では、スタンプ画像の回転やリサイズは、OS層203で実行される。
S1011において、OS層203は、S1004で確保された出力画像領域に対して、レンダリング後のスタンプ画像データを格納する。ここで、図10のS1011の「出力画像領域に反映」とは、S1007と同様、S1004で確保された出力画像領域(メモリ)に変更を加えることであり、ディスプレイ106上に画像を表示することではない。
S1012において、スクリプト層201の画像処理部213は、ネイティブ層202に対して印刷用の画像データの取得を依頼する。
S1013において、OS層203は、出力画像領域の画像データを、BASE64のデータ形式に変換してスクリプト層201に送信する。
S1014において、スクリプト層201のプリンタ制御部214は、ネイティブ層202に対してBASE64データを送信し、印刷を依頼する。
S1015において、ネイティブ層202のプリンタデータ生成部215は、スクリプト層201から送信されたBASE64データをデコードする。S1016において、ネイティブ層202のプリンタデータ生成部215は、デコードされたデータからRGBデータに変換し、S1017において、OS層203に対してインジケータの停止を依頼する。S1018において、OS層203は、インジケータを停止させてディスプレイへの表示を停止する。
[プリント]
S1018の処理が終了すると、S308の処理が開始する。図11は、S308のプリント処理を示すフローチャートである。
S1101において、ネイティブ層202のプリンタデータ生成部215は、S910で取得されたプリント情報に基づいて、S1016で変換されたRGBデータをプリンタ115が処理可能なデータ形式に変換する。プリンタ115が処理可能なデータ形式には標準的なフォーマット(JPEG等)もあれば、各社独自のフォーマットの場合もある。ここではそれらのうち、どのようなデータ形式であっても良い。
S1102において、ネイティブ層202のプリンタデータ生成部215は、プリント情報と、S1101で生成されたRGBデータとに基づいて、プリンタ115へ送信するコマンドを生成する。
S1103において、ネイティブ層202のプリンタデータ生成部215は、プリンタ115が対応可能な通信プロトコルに従って、S1102で生成されたコマンドをOS層203のプリンタ通信部217を介して送信する。その際、S903で記憶されたIPアドレスを送信宛先とする。
S1104において、プリンタ115において、印刷が開始されて印刷物が出力される。
以上のように、本実施形態では、ネイティブ層202の画像読込部205により、画像データの展開が行われる。画像データの展開後、ネイティブ層202は、データ変換部207を介して、スクリプト層201が解釈可能なBASE64データ形式に変換してスクリプト層201へ送信する。スクリプト層201は、本実施形態の手順で受信したBASE64データ形式の画像データを使用することによって、画像データに基づいたUI画面上への描画およびレンダリング処理を行うことが可能となる。
[第2の実施形態]
第1の実施例では、ネイティブ層202の画像読込部205が画像群206から画像データを取得していた。そして、スクリプト層201では、ネイティブ層202から画像データを受け取ることで、画像データに基づく印刷時のレンダリングを可能にしていた。
第2の実施形態では、スクリプト層201では表示用の画像データを取得し、ネイティブ層202では処理用(印刷処理等)の画像データを保持する。
第2の実施形態では、第1の実施形態と異なり、スクリプト層201は、表示に用いる画像データをファイルパスによって参照する一方、ネイティブ層202は、第1の実施形態と同様に画像データを取得し、レンダリング処理をネイティブ層202側で行う。
図16は、本実施形態における携帯型情報端末100上でのソフトウェア構成の一例を示す図である。図2と異なる部分は、スクリプト層201の画像取得部204が、ネイティブ層202を介さずに画像群206にアクセスしている点である。そのような経路によって画像取得部204が取得する画像データは「表示用」に利用される。一方、ネイティブ層202の画像読込部205は、画像群206にアクセスして画像データを取得し、その画像データは、RGBデータとしてデータ保持部209に記憶される。そのような経路によって取得された画像データは「処理用」に利用される。
印刷等の画像処理イベントが発生する際、スクリプト層は、画像処理イベントの命令内容をデータ変換部208でJSONデータ形式に変換してネイティブ層202へ送信する。ネイティブ層202の画像処理部210は、JSONデータ形式に変換されて送信された命令内容に基づいて、データ保持部209に記憶されたRGBデータに対して画像処理を行う。画像処理されたRGBデータはデータ保存部216に保存される。保存場所に関しては、ネイティブ層202がアクセスできる領域であれば他の場所でも良い。
スクリプト層201では、逐次的に表示画像の参照先ファイルパスを、画像処理された画像データのファイルパスに変更することで、UI上に表示する「表示用」画像を更新する。印刷レンダリングイベントも上記の画像処理イベントと同様の手順で行われる。
以下、第1の実施形態と異なる部分について説明する。
[写真画像選択]
図17は、本実施形態における写真画像選択の処理を示すフローチャートである。図17は、S1701及びS1702の点で図4と異なる。
S1701において、スクリプト層201の画像取得部204は、画像群206から表示用の画像データを選択し、S1702において、その選択した画像データをImageオブジェクトとして取得する。このように、本実施形態においては、表示用の画像データは、Imageオブジェクトとして取得される。スクリプト層201は、「表示用」のImageオブジェクトを第1の実施形態と同様の手順でOS層203のインタプリタ218を介してUI画面上に表示するよう処理する。
一方、ネイティブ層202では、第1の実施形態と同様に、「処理用」のRGBデータの取得が行われる。但し、第1の実施形態と異なり、ネイティブ層202では、RGBデータをスクリプト層201が解釈できる形式に変換して送信する処理は行われない。スクリプト層201で表示処理するImageオブジェクトと、ネイティブ層202で展開処理するRGBデータとは、一意なIDによって対応付けられる。
[画像処理]
図18は、本実施形態における画像処理を示すフローチャートである。図18は、S1801〜S1804の点で図5と異なる。
S1801において、ネイティブ層202のデータ保存部216は、画像処理部210により画像処理が実行された「処理用」のRGBデータを保存する。
S1802において、スクリプト層201の画像取得部204は、S1801で保存された画像データ(RGBデータ)のファイルパスを取得する。ファイルパスは、S508でインジケータ停止依頼がスクリプト層201に送信される際に同時に送信される。なお、ネイティブ層202がインジケータ停止前後のタイミングにおいて、スクリプト層201に送信されるようにしても良い。また、予め処理された画像データ名や保存場所がスクリプト層201で記憶されているのであれば、スクリプト層201の画像取得部204は、その情報を利用するようにしても良い。
S1803において、スクリプト層201では、ファイルパスで指定される画像データを表示するための領域がRAM103に確保される。メモリの確保のために、例えば、HTMLのCanvas機能が用いられ、画像の描画は、Canvasの持つContextオブジェクトのAPIにより行われる。
S1804において、スクリプト層201の画像処理制御部213は、補正パラメータを生成し、その補正パラメータを初期化する。その際の初期化値は、スライドバー1202の位置に対応した値(例えば輝度値)を設定する。
[スタンプ画像の追加]
図19は、本実施形態におけるスタンプ画像の追加処理を示すフローチャートである。図19は、S1901及び1902の点で図6と異なる。
S1901において、スクリプト層201の画像取得部204は、画像群206からスタンプ画像データを選択し、S1902において、その選択したスタンプ画像データをImageオブジェクトとして取得する。このように、本実施形態においては、表示用のスタンプ画像データは、Imageオブジェクトとして取得される。スクリプト層201は、「表示用」のImageオブジェクトを第1の実施形態と同様の手順でOS層203のインタプリタ218を介してUI画面上に表示するよう処理する。
一方、ネイティブ層202では、第1の実施形態と同様に、「処理用」のRGBデータの取得が行われる。但し、第1の実施形態と異なり、ネイティブ層202では、RGBデータをスクリプト層201が解釈できる形式に変換して送信する処理は行われない。スクリプト層201で表示処理するImageオブジェクトと、ネイティブ層202で展開処理するRGBデータとは、一意なIDによって対応付けられる。
[レンダリング]
図20は、本実施形態におけるレンダリング処理を示すフローチャートである。ユーザによる、プリンタ設定UI1301の設定完了ボタン1302の押下を検出することにより、図20の処理が開始する。
S2001において、スクリプト層201は、インジケータを起動させてディスプレイ106に表示する。
S2002において、スクリプト層201は、S910で取得されたプリント情報から、用紙サイズに対応する出力サイズを決定し、その出力サイズに応じた描画領域をRAM103に確保する。
S2003において、スクリプト層201は、ネイティブ層202に写真画像データの描画を依頼する。その際、スクリプト層201は、写真画像データのIDと、依頼する画像データの横サイズ及び縦サイズの情報とをデータ変換部208でデータ変換し、ネイティブ層202に送信する。
S2004において、ネイティブ層202は、スクリプト層201から受け取ったIDに基づいて、データ保持部209から対応する「処理用」のRGBデータを特定する。
S2005において、ネイティブ層202の画像処理部210は、S2003で受け取った画像の横サイズ及び縦サイズに、S2004で特定された「処理用」RGBデータをリサイズする。
S2006において、スクリプト層201は、「処理用」画像のリサイズ完了をネイティブ層202から受けて、描画領域1206とS2002で決定した出力領域のサイズとから拡大倍率を算出する。ここで、リサイズ完了は、S2003の処理に対する返り値等によって受け取るようにしても良い。その後、スクリプト層201は、描画領域の拡大倍率、回転情報などのオブジェクトパラメータ値、スタンプ画像のIDをネイティブ層202に送信し、ネイティブ層202に「処理用」スタンプ画像データの描画を依頼する。
S2007において、ネイティブ層202は、S2006で受け取ったIDに基づいて、データ保持部209から対応する「処理用」のRGBデータを特定する。
S2008において、ネイティブ層202は、S2006で受け取った拡大倍率や回転情報から、S2007で特定された「処理用」RGBデータをリサイズ/回転する。
S2009において、ネイティブ層202は、写真画像についての「処理用」RGBデータと、スタンプ画像についての「処理用」RGBデータとを合成する。その際、スタンプ画像の合成位置は、オブジェクトパラメータの値に基づいて写真画像との相対的な位置を算出することにより決定される。
S2010において、ネイティブ層202は、スクリプト層201にインジケータの停止を依頼する。S2011において、スクリプト層201は、インジケータを停止させてディスプレイへの表示を停止する。
以上のように、本実施形態では、スケーリング等の画像処理は、ネイティブ層202で保持された「処理用」RGBデータに対して行われる。つまり、スクリプト層201でパス指定により取得された「表示用」画像データに対しては、画像処理や印刷レンダリングは行われない。従って、図16に示すようなソフトウェア構成において、画像データに基づく画像処理や印刷レンダリングを確実に実行することができる。また、本実施形態では、画像処理イベント時および印刷レンダリング時において、ネイティブ層202のデータ変換部207が「処理用」画像データをBASE64データ形式に変換する処理を行わない。その結果、処理速度をより向上させることができる。
[第3の実施形態]
図21は、本実施形態における、携帯型情報端末100のソフトウェア構成を示す図である。図21は、OS層203のWebデータ取得部220の点で図2と異なる。本実施形態においては、ユーザが選択可能な写真画像データは、第1及び第2の実施形態のように携帯型情報端末100内でなく、Web上画像群221に保存されている。
ユーザがWebサイト上の写真画像を選択すると、スクリプト層201の画像取得部204は、ネイティブ層202に画像取得を指示する。画像取得の指示を受けると、ネイティブ層202は、OS層203のWebデータ取得部220を介して、Web上画像群221が存在するWebサイトへアクセスする。その際の通信方式は特に限定されない。
Webデータ取得部220は、Web上画像群221から画像データを取得するとネイティブ層202がアクセスできる画像群206に、取得した画像データを保存する。以降、ネイティブ層202の画像読込部205は、第1の実施形態と同様に、Webサイトから取得した画像データを取得する。
[写真画像選択]
図22は、本実施形態における、写真画像選択の処理を示すフローチャートである。図22は、S2201〜S2203の点で図4と異なる。
S2201において、ネイティブ層202は、OS層203にWebサイト上の画像(Web上画像群221)の取得を依頼する。
S2202において、OS層203のWebデータ取得部220は、Webサイト上の画像をダウンロードする。
S2203において、OS層203のWebデータ取得部220は、ダウンロードした画像を画像群206に保存する。なお、保存先は、データ保存部216でも良い。以降、ネイティブ層202は、第1の実施形態と同様に、保存された画像データを展開する。
以上のように、本実施形態では、Webサイト上の画像データであっても、第1の実施形態のように、ネイティブ層202が画像データを読み込み、BASE64データに変換してからスクリプト層201に渡し、表示や印刷時レンダリングを行うことができる。
また、第2の実施形態で説明した動作を適用しても良い。即ち、スクリプト層201の画像取得部204が、画像群206に保存された画像データを「表示用」画像データとして取得すると共に、ネイティブ層202の画像読込部205が「処理用」画像データとして取得するようにしても良い。
[第4の実施形態]
第4の実施形態では、画像データをオンメモリで保持し続けるのではなく、画像データを利用しない場合には、テンポラリファイルとして二次記憶装置104(データ保存部216)に保存しておく。スクリプト層201の画像処理制御部213から画像処理の依頼があった場合には、ネイティブ層202の画像読込部205は、データ保存部216中のテンポラリファイルを読み込む。そして、ネイティブ層202の画像処理部210は、テンポラリファイルに対応したRGBデータに対して画像処理を行う。
[写真画像選択]
図23は、本実施形態における、写真画像選択の処理を示すフローチャートである。図23は、S2301〜S2303の点で図4と異なる。
S2301において、ネイティブ層202は、RGBデータをテンポラリファイルとして保存するための保存先を決定する。保存先として、ネイティブ層202がアクセス可能な保存場所が決定される。例えば、ネイティブ層202のデータ保存部216や画像群206が保存先として決定される。
S2302において、ネイティブ層202は、図23の選択対象の画像データ(RGBデータ)についてスクリプト層201が生成したIDと、ネイティブ層202が取得したRGBデータの保存先とを関連付ける。
S2303において、ネイティブ層202は、RGBデータをテンポラリファイルとして保存する。ここで、保存形式は、汎用的なファイル形式であれば特に限定されない。
[画像処理]
図24は、本実施形態における、画像処理のフローチャートを示す図である。図24は、S2401及びS2402の点で図5と異なる。
本実施形態では、ネイティブ層202が画像データをRAM103に保持していないので、S2401において、ネイティブ層202は、IDと関連付けられたテンポラリファイルのパスを取得する。テンポラリファイルからの画像データ取得後は、第1の実施形態と同様に、画像処理部210により画像処理が行われ、データ変換部207によりBASE64データ形式に変換されてスクリプト層201へ送信される。
S2402において、ネイティブ層202は、RGBデータをテンポラリファイルとして保存する。その際、既にデータ保存部216に保存されているテンポラリファイルが上書き更新されることになる。
[スタンプ画像の追加]
図25は、本実施形態における、スタンプ画像の追加の処理を示すフローチャートである。図25は、S2501〜S2503の点で図6と異なる。
S2501において、ネイティブ層202は、スタンプ画像についてのRGBデータをテンポラリファイルとして保存するための保存先を決定する。保存先として、ネイティブ層202がアクセス可能な保存場所が決定される。例えば、ネイティブ層202のデータ保存部216や画像群206が保存先として決定される。
S2502において、ネイティブ層202は、スタンプ画像のRGBデータについてスクリプト層201が生成したIDと、ネイティブ層202が取得したRGBデータの保存先とを関連付ける。
S2503において、ネイティブ層202は、RGBデータをテンポラリファイルとして保存する。ここで、保存形式は、汎用的なファイル形式であれば特に限定されない。
以上のように、本実施形態においては、使用しない時の画像データを一旦テンポラリファイルとして保存し、必要な時のみ展開する。その結果、ネイティブ層202のデータ保持部209は画像データを保持し続けることがなくなり、RAM103の使用メモリを効率的に使用することができる。
また、第2の実施形態の動作を適用しても良い。即ち、スクリプト層201の画像取得部204が、データ保存部216に保存されたテンポラリファイルを「表示用」画像データとして取得すると共に、ネイティブ層202の画像読込部205が「処理用」画像データとして取得するようにしても良い。
なお、以上の実施形態では、ネイティブ層202においてWebサイト上の画像データが取得される例を示したが、これに限らず、オフラインでアクセス可能な画像データが取得されてもよい。
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
100 携帯情報端末: 101 CPU: 102 ROM: 103 RAM

Claims (28)

  1. プロセッサと、
    アプリケーションの実行の際に前記プロセッサが実行可能に翻訳されて実行されるスクリプト命令セットで構成された第1の層と、前記プロセッサが実行可能な命令セットで構成された第2の層と、を有する階層構造を成し、前記第1の層と前記第2の層との連携により前記アプリケーションを実行するためのプログラムを記憶する記憶手段と、
    前記アプリケーションの機能により、指定された画像に対する画像処理を行う場合、前記第2の層において、当該指定された前記画像の画像データを取得する取得手段と、
    前記第1の層において、前記取得手段により取得され且つ前記第2の層において前記第1の層が解釈可能なデータ形式に変換された前記画像データを含む、印刷用コンテンツの印刷スクリプトを生成する生成手段と、
    前記生成手段により生成された前記印刷スクリプトを解釈することにより、当該印刷スクリプトを印刷用解像度に対応する印刷用画像データにレンダリングするレンダリング手段と、を備え、
    前記レンダリング手段は、印刷用紙情報に基づいて出力画像サイズを取得し、前記印刷スクリプトに含まれている前記画像データを当該取得された出力画像サイズに応じて拡大または縮小することで、前記印刷用画像データを生成することを特徴とする情報処理装置。
  2. 前記第2の層において、前記取得手段により取得された前記画像データを前記第1の層が解釈可能なデータ形式に変換する変換手段、をさらに備え、
    前記生成手段は、前記第1の層において、前記変換手段によりデータ形式が変換された前記画像データを含む前記印刷スクリプトを生成することを特徴とする請求項1に記載の情報処理装置。
  3. 前記第1の層は、HTML5、JavaScript(登録商標)の少なくともいずれかにより記述されていることを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記取得手段は、Webサイト上の画像データもしくはオフラインでアクセス可能な画像データを取得することを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記取得手段により取得された前記画像データを保存する保存手段と、
    前記第1の層において、前記画像処理の実行の指示を受け付ける受付手段と、をさらに備え、
    前記受付手段により前記画像処理の実行の指示を受け付けると、前記生成手段は、前記保存手段から前記画像データを前記第1の層が解釈可能なデータ形式で取得し、前記印刷スクリプトを生成することを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. アプリケーションの実行の際にプロセッサが実行可能に翻訳されて実行されるスクリプト命令セットで構成された第1の層と、前記プロセッサが実行可能な命令セットで構成された第2の層と、を有する階層構造を成し、前記第1の層と前記第2の層との連携により前記アプリケーションを実行するためのプログラムを実行する装置において実行される情報処理方法であって、
    前記アプリケーションの機能により、指定された画像に対する画像処理を行う場合、前記第2の層において、当該指定された前記画像の画像データを取得する取得工程と、
    前記第1の層において、前記取得工程において取得され且つ前記第2の層において前記第1の層が解釈可能なデータ形式に変換された前記画像データを含む、印刷用コンテンツの印刷スクリプトを生成する生成工程と、
    前記生成工程において生成された前記印刷スクリプトを解釈することにより、当該印刷スクリプトを印刷用解像度に対応する印刷用画像データにレンダリングするレンダリング工程と、を有し、
    前記レンダリング工程では、印刷用紙情報に基づいて出力画像サイズを取得し、前記印刷スクリプトに含まれている前記画像データを当該取得された出力画像サイズに応じて拡大または縮小することで、前記印刷用画像データを生成することを特徴とする情報処理方法。
  7. アプリケーションの実行の際にプロセッサが実行可能に翻訳されて実行されるスクリプト命令セットで構成された第1の層と、前記プロセッサが実行可能な命令セットで構成された第2の層と、を有する階層構造を成し、前記第1の層と前記第2の層との連携により前記アプリケーションを実行するためのプログラムであって、
    前記アプリケーションの機能により、指定された画像に対する画像処理を行う場合、前記第2の層において、当該指定された前記画像の画像データを取得し、
    前記第1の層において、前記取得され且つ前記第2の層において前記第1の層が解釈可能なデータ形式に変換された前記画像データを含む、印刷用コンテンツの印刷スクリプトを生成し、
    前記生成された印刷スクリプトを解釈し且つ印刷用紙情報に基づいて出力画像サイズを取得し、前記印刷スクリプトに含まれている前記画像データを当該取得された出力画像サイズに応じて拡大または縮小することで、印刷用解像度に対応する印刷用画像データを生成することを特徴とするプログラム。
  8. 前記第2の層において、前記取得された画像データを前記第1の層が解釈可能なデータ形式に変換し、
    前記印刷スクリプトの生成では、前記第1の層において、前記変換によりデータ形式が変換された前記画像データを含む印刷スクリプトを生成する請求項7に記載のプログラム。
  9. 前記第1の層は、HTML5、JavaScript(登録商標)の少なくともいずれかにより記述されている請求項7又は8に記載のプログラム。
  10. 前記画像データの取得では、Webサイト上の画像データもしくはオフラインでアクセス可能な画像データを取得する請求項7乃至9のいずれか1項に記載のプログラム。
  11. 前記取得された前記画像データを保存し、
    前記第1の層において、前記画像処理の実行の指示を受け付けると、前記保存された前記画像データを前記第1の層が解釈可能なデータ形式で取得し、前記印刷スクリプトを生成する請求項7乃至10のいずれか1項に記載のプログラム。
  12. プロセッサと、
    アプリケーションの実行の際に前記プロセッサで実行可能なように翻訳され当該プロセッサにより実行されるスクリプト命令セットで構成された第1の層と、前記プロセッサで実行可能なように予め翻訳されている命令セットで構成された第2の層と、を有する階層構造を成し、前記第1の層と前記第2の層との連携により前記アプリケーションを実行するためのプログラムを記憶する記憶手段と、
    前記アプリケーションの機能により、指定された画像に対する画像処理を行う場合、前記第2の層において、当該指定された画像に対応する画像データを取得する取得手段と、
    前記第1の層において、前記取得手段により取得された画像データに対応する、前記第1の層が解釈可能なデータ形式のデータを前記第2の層から受け取り、当該データに基づいて前記画像処理を命令する命令手段と、
    を備えることを特徴とする情報処理装置。
  13. 前記画像処理が印刷処理である場合に、
    前記命令手段により前記印刷処理が命令されると、前記第2の層において、前記取得手段により取得された前記画像データのレンダリングを行うレンダリング手段、をさらに備えることを特徴とする請求項12に記載の情報処理装置。
  14. 前記画像処理が表示処理である場合に、
    前記命令手段により前記表示処理が命令されると、前記第2の層において、前記取得手段により取得された前記画像データの表示処理を行う表示手段、をさらに備えることを特徴とする請求項12又は13に記載の情報処理装置。
  15. 前記命令手段は、前記第1の層がJavaScript(登録商標)で記述されている場合、Canvasを用いて前記表示処理を命令することを特徴とする請求項14に記載の情報処理装置。
  16. 前記第2の層において、前記取得手段により取得された前記画像データを前記第1の層が解釈可能なデータ形式に変換する変換手段、をさらに備え、前記命令手段は、前記第1の層において、前記変換手段によりデータ形式が変換された前記画像データを前記第2の層から受け取ることを特徴とする請求項12乃至15のいずれか1項に記載の情報処理装置。
  17. 前記第1の層は、HTML5、JavaScript(登録商標)の少なくともいずれかにより記述されていることを特徴とする請求項12乃至16のいずれか1項に記載の情報処理装置。
  18. 前記取得手段は、Webサイト上の画像データもしくはオフラインでアクセス可能な画像データを取得することを特徴とする請求項12乃至17のいずれか1項に記載の情報処理装置。
  19. 前記取得手段により取得された前記画像データを保存する保存手段と、
    前記第1の層において、前記画像処理の実行の指示を受け付ける受付手段と、をさらに備え、
    前記受付手段により前記画像処理の実行の指示を受け付けると、前記命令手段は、前記保存手段から前記画像データを前記第1の層が解釈可能なデータ形式で取得し、前記画像処理を命令する、ことを特徴とする請求項12乃至18のいずれか1項に記載の情報処理装置。
  20. プロセッサと、
    アプリケーションの実行の際に前記プロセッサで実行可能なように翻訳され当該プロセッサにより実行されるスクリプト命令セットで構成された第1の層と、前記プロセッサで実行可能なように予め翻訳されている命令セットで構成された第2の層と、を有する階層構造を成し、前記第1の層と前記第2の層との連携により前記アプリケーションを実行するためのプログラムを記憶する記憶手段とを有する情報処理装置において実行される情報処理方法であって、
    前記アプリケーションの機能により、指定された画像に対する画像処理を行う場合、前記第2の層において、当該指定された画像に対応する画像データを取得する取得工程と、
    前記第1の層において、前記取得工程において取得された画像データに対応する、前記第1の層が解釈可能なデータ形式のデータを前記第2の層から受け取り、当該データに基づいて前記画像処理を命令する命令工程と、
    を有することを特徴とする情報処理方法。
  21. アプリケーションの実行の際にプロセッサで実行可能なように翻訳され当該プロセッサにより実行されるスクリプト命令セットで構成された第1の層と、前記プロセッサで実行可能なように予め翻訳されている命令セットで構成された第2の層と、を有する階層構造を成し、前記第1の層と前記第2の層との連携により前記アプリケーションを実行するためのプログラムであって、
    前記アプリケーションの機能により、指定された画像に対する画像処理を行う場合、前記第2の層において、当該指定された画像に対応する画像データを取得し、
    前記第1の層において、当該取得された画像データに対応する、前記第1の層が解釈可能なデータ形式のデータを前記第2の層から受け取り、当該データに基づいて前記画像処理を命令する、
    ようにコンピュータを機能させるためのプログラム。
  22. 前記画像処理が印刷処理である場合に、
    前記印刷処理が命令されると、前記第2の層において、取得された前記画像データのレンダリングを行うようにコンピュータを機能させるための請求項21に記載のプログラム。
  23. 前記画像処理が表示処理である場合に、
    前記表示処理が命令されると、前記第2の層において、取得された前記画像データの表示処理を行うようにコンピュータを機能させるための請求項21又は22に記載のプログラム。
  24. 前記第1の層がJavaScript(登録商標)で記述されている場合、Canvasを用いて前記表示処理が命令される請求項23に記載のプログラム。
  25. 前記第2の層において、取得された前記画像データを前記第1の層が解釈可能なデータ形式に変換し、
    前記第1の層において、当該データ形式が変換された前記画像データを前記第2の層から受け取る請求項21乃至24のいずれか1項に記載のプログラム。
  26. 前記第1の層は、HTML5、JavaScript(登録商標)の少なくともいずれかにより記述されている請求項21乃至25のいずれか1項に記載のプログラム。
  27. 前記画像データは、Webサイト上の画像データもしくはオフラインでアクセス可能な画像データである請求項21乃至26のいずれか1項に記載のプログラム。
  28. 取得された前記画像データを保存し、
    前記第1の層において、前記画像処理の実行の指示を受け付けるようにコンピュータをさらに機能させ、
    前記画像処理の実行の指示を受け付けると、保存された前記画像データを前記第1の層が解釈可能なデータ形式で取得し、前記画像処理を命令するようにコンピュータを機能させるための請求項21乃至27のいずれか1項に記載のプログラム。
JP2014135177A 2014-06-30 2014-06-30 情報処理装置、情報処理方法、プログラム Active JP5901704B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014135177A JP5901704B2 (ja) 2014-06-30 2014-06-30 情報処理装置、情報処理方法、プログラム
US14/741,958 US9436413B2 (en) 2014-06-30 2015-06-17 Information processing apparatus, information processing method, and storage medium storing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014135177A JP5901704B2 (ja) 2014-06-30 2014-06-30 情報処理装置、情報処理方法、プログラム

Publications (2)

Publication Number Publication Date
JP2016014919A JP2016014919A (ja) 2016-01-28
JP5901704B2 true JP5901704B2 (ja) 2016-04-13

Family

ID=54930905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014135177A Active JP5901704B2 (ja) 2014-06-30 2014-06-30 情報処理装置、情報処理方法、プログラム

Country Status (2)

Country Link
US (1) US9436413B2 (ja)
JP (1) JP5901704B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6378645B2 (ja) 2014-06-13 2018-08-22 キヤノン株式会社 情報処理装置、制御方法、及びプログラム
JP6525517B2 (ja) * 2014-06-30 2019-06-05 キヤノン株式会社 情報処理装置、制御方法、及びプログラム
JP6138088B2 (ja) 2014-06-30 2017-05-31 キヤノン株式会社 情報処理装置、制御方法、及びソフトウェアプログラム
JP6363888B2 (ja) 2014-06-30 2018-07-25 キヤノン株式会社 情報処理装置、およびプログラム
JP6463914B2 (ja) 2014-06-30 2019-02-06 キヤノン株式会社 情報処理装置、処理方法、及びプログラム
JP6711275B2 (ja) * 2014-09-22 2020-06-17 ソニー株式会社 画像表示制御装置、送信装置、および画像表示制御方法、並びにプログラム
JP6250013B2 (ja) 2014-11-26 2017-12-20 ネイバー コーポレーションNAVER Corporation コンテンツ参加翻訳装置、及びそれを利用したコンテンツ参加翻訳方法
KR20170086891A (ko) * 2016-01-19 2017-07-27 에스프린팅솔루션 주식회사 화상형성작업의 수행을 위한 어플리케이션을 실행하는 화상형성장치 및 화상형성장치에서 화상형성작업을 수행하는 방법
JP6649832B2 (ja) 2016-03-30 2020-02-19 キヤノン株式会社 情報処理装置およびその制御方法、並びにプログラム
JP6799396B2 (ja) * 2016-07-01 2020-12-16 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
JP6786342B2 (ja) 2016-10-18 2020-11-18 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
CN106993238A (zh) * 2017-04-14 2017-07-28 网宿科技股份有限公司 基于Html5的音视频播放方法及装置、音视频直播方法及系统
JP2023020591A (ja) * 2021-07-30 2023-02-09 キヤノン株式会社 情報処理装置、その制御方法及びプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030005050A1 (en) * 2001-05-30 2003-01-02 Pineau Richard A. Method and apparatus for providing output from remotely located digital files using a remote printer
JP2005085052A (ja) * 2003-09-10 2005-03-31 Toshiba Corp 携帯情報端末、印刷方法および印刷用プログラム
JP2010218457A (ja) * 2009-03-18 2010-09-30 Ricoh Co Ltd 画像形成装置、画像形成方法およびプログラム
KR101350661B1 (ko) * 2011-09-30 2014-01-10 엔에이치엔엔터테인먼트 주식회사 웹 기술을 이용한 하이브리드 어플리케이션 구동 장치 및 방법
US9785787B2 (en) * 2013-09-30 2017-10-10 Juniper Networks, Inc. Encrypting images on a client device for secure transmission and storage on a storage device

Also Published As

Publication number Publication date
US9436413B2 (en) 2016-09-06
US20150379382A1 (en) 2015-12-31
JP2016014919A (ja) 2016-01-28

Similar Documents

Publication Publication Date Title
JP5901704B2 (ja) 情報処理装置、情報処理方法、プログラム
JP6363888B2 (ja) 情報処理装置、およびプログラム
US10296267B2 (en) Information processing apparatus, information processing method, and storage medium
JP6478487B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP6381319B2 (ja) 情報処理装置、処理方法、及びプログラム
US10620892B2 (en) Information processing apparatus that displays a print setting screen based on information of a printing apparatus in a format interpretable in a first program layer and processing method thereof
JP6138088B2 (ja) 情報処理装置、制御方法、及びソフトウェアプログラム
US10075620B2 (en) Information processing apparatus, control method for information processing apparatus, and non-transitory computer-readable storage medium
US20140368869A1 (en) Method of printing web page by using mobile terminal and mobile terminal for performing the method
JP6799396B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP6360370B2 (ja) 情報処理装置、情報処理方法、およびプログラム
JP6008897B2 (ja) 装置、方法、及びプログラム
JP6786342B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP6649832B2 (ja) 情報処理装置およびその制御方法、並びにプログラム
JP7395334B2 (ja) 情報処理装置、情報処理方法、およびプログラム
JP6757368B2 (ja) 情報処理装置、処理方法、及びプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151225

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160308

R151 Written notification of patent or utility model registration

Ref document number: 5901704

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151