JP2006302093A - サーバにファイルを転送するためのクライアントコンピュータ装置及びその制御方法及びそのプログラム及びそれを含むシステム - Google Patents

サーバにファイルを転送するためのクライアントコンピュータ装置及びその制御方法及びそのプログラム及びそれを含むシステム Download PDF

Info

Publication number
JP2006302093A
JP2006302093A JP2005124986A JP2005124986A JP2006302093A JP 2006302093 A JP2006302093 A JP 2006302093A JP 2005124986 A JP2005124986 A JP 2005124986A JP 2005124986 A JP2005124986 A JP 2005124986A JP 2006302093 A JP2006302093 A JP 2006302093A
Authority
JP
Japan
Prior art keywords
storage area
file
data storage
capacity
files
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.)
Withdrawn
Application number
JP2005124986A
Other languages
English (en)
Inventor
Yutaka Miyouki
裕 妙木
Masanori Saito
正憲 齋藤
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 JP2005124986A priority Critical patent/JP2006302093A/ja
Publication of JP2006302093A publication Critical patent/JP2006302093A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

【課題】 クライアントコンピュータからサーバへ画像がアップロードされる際に、サーバ上の記憶領域の残り容量を超えないように、複数の画像の中から最適な画像を選択してアップロードすることを目的とする。
【解決手段】 クライアントコンピュータのプログラムによって、アップロード対象の画像が登録された時点で、それらの画像ファイルの合計サイズがサーバ上の記憶領域の残り容量を超えるかどうかを検知し、超える場合には、それらの画像の類似度に基づき、残り容量を超えないような数だけ画像を自動的に選択してアップロードする。
【選択図】 図16

Description

本発明はコンピュータネットワーク環境におけるファイル転送方法,特にユーザに所定の記憶容量を割り当てて情報記憶領域を提供するサーバ装置に対してファイルを転送する際に,残り記憶容量に応じて転送候補のファイルを自動的に絞り込む方法に関する。
近年,通信環境の整備及び情報通信技術の発展により,コンピュータネットワーク,例えばインターネットを利用して,情報・サービスの提供を行なうサービスサイトが実現されている。特に,通信速度の向上や常時接続環境の普及,記憶装置の低価格化などを背景として,ネットワーク上にユーザ専用の情報記憶領域を提供するサービスサイト(ストレージサイト)が増加してきている。例えば,ユーザの画像をネットワーク上で保管し,編集,印刷,閲覧等のサービスを提供するフォトシェアリングサイトもその一つである。
従来,このようなフォトシェアリングサイトをユーザが利用する場合,まず,ユーザが有するコンピュータ機器(ユーザPC),デジタル撮像機器(デジタルビデオカメラ,デジタルスチルカメラ等)もしくはデジタル撮像機器を有する電子機器などに保管されている画像を,フォトシェアリングサイトを実現するサーバ装置に転送(アップロード)する。かかる後に,これらアップロードした画像の閲覧や,画像処理などのサービスが利用可能になる。
ユーザのアップロード操作は,まずアップロードする画像を選択し,しかる後にアップロードを指示するという二段階を踏む場合が多い。
アップロードする画像の選択操作においては,各機器で直接選択したり,あるいはコンピュータ機器にいったん転送してからコンピュータ機器上のソフトウェアで選択したりする。
アップロード操作においては,各機器から直接,又はインターネットに接続可能なコンピュータ機器等を介し,HTTP(Hypertext Transfer Protocol;RFC1945およびRFC2068),FTP(File Transfer Protocol;RFC959)等のプロトコルを用いて,サーバのあらかじめユーザに割り当てられた記憶領域にそれらの画像をアップロードする。
従来のフォトシェアリングサイトでは,1ユーザに与えられる記憶領域の容量に対して上限が設定されている場合が多い。このようなサイトで,1ユーザの使用している記憶領域の容量が上限に達したか否かを判定する際には,ユーザからのアップロード処理後に,サーバ上でこのユーザの画像全体の容量を計算し,その値が上限を超えていた場合,ユーザにその旨を伝え,直前に行なわれた画像アップロード処理を無効にしていた。
しかしながらこの方法では,ユーザが実際に画像をすべてアップロードしてみなければ,それら画像をアップロードすることによって記憶領域の上限を超えるか否かを知ることができないという問題があった。
これに対応するために,ZoomBrowser EXソフトウェア(非特許文献1)においては,画像のアップロードを行なう直前の画面に「アップロード先の容量を確認する」ボタンを設けることで,ユーザがそのボタンを操作すればサーバ上での記憶領域の残り容量を取得して表示するようになっていた。
しかしながらこの方法では,ユーザはアップロード処理を開始する直前にならなければサーバの記憶領域の残り容量を知ることができない,つまりアップロードする画像を選択している時点では残り容量を知ることができないという問題がある。
また,特開2003−108408号公報(特許文献1)では,アップロード済みのファイル数と使用済みの記憶容量とから,平均ファイルサイズを算出し,未使用の記憶容量と平均ファイルサイズから転送可能な残りファイル数を推定し,ユーザからのアップロード処理の要求があった場合,実際のアップロード処理を開始する前に推定した転送可能なファイル数を通知するという方法が提示されている。
同じように,特開2003−108409号公報(特許文献2)では,ユーザの使用する画像入力機器に対応する平均ファイルサイズを用い,未使用の記憶容量と平均ファイルサイズから転送可能な残りファイル数を推定し,ユーザからのアップロード処理の要求があった場合,実際のデータ転送処理を開始する前に推定した転送可能なファイル数を通知するという方法が提示されている。
しかしながら特開2003−108408号公報(特許文献1)や特開2003−108409号公報(特許文献2)の方法においても,アップロードする画像を選択している時点では残り容量を知ることができないという問題がある。また,推計はあくまでも推計であって,ユーザが選択した画像がすべてアップロード可能であることを保証するものではない。
さらに,以上のような方法で残り容量を知ったとしても,その残り容量を超えないようにするためには,ユーザは登録したい個々の画像ファイルのファイルサイズと残り容量とを比較しながら,登録する画像を減らしたり,別の画像に差し替えたりといった操作を手動で行なう必要があり,相当の手間と時間とを要するという問題があった。
キヤノン株式会社「ZoomBrowser EX ソフトウェアユーザガイド Version 4.5 (CDP-J025-010) p.105」(http://web.canon.jp/Imaging/information-j.htmlからダウンロード可能) 特開2003−108408号公報 特開2003−108409号公報
本発明は以上の事情に鑑みてなされたものであり,ユーザがクライアント側のプログラムでアップロード対象の画像を登録した時点で,それらの画像ファイルの合計サイズがサーバ上の記憶領域の残り容量を超える場合は,それらの画像の類似度を利用して,残り容量を超えないようにアップロード対象の画像の数を自動調整できるようにすることを課題とする。
本発明の一側面に係るクライアントはあらかじめ,サーバからデータ記憶領域の空き容量の情報を取得する。クライアントはその取得後に,データ記憶領域に転送するファイルをユーザに登録させるためのGUIを表示し,表示したGUIに対する入力デバイスによる指示に基づいてデータ記憶領域に転送するファイルを登録し,それらをすべて転送対象として選択した場合の合計ファイル容量を計算し,計算された合計ファイル容量がデータ記憶領域の空き容量を超える場合は,登録されたファイルのうち類似すると判断されたものを自動的に非選択状態にする。
以上により,ユーザがクライアント側のプログラムでアップロード対象の画像を登録した時点で,それらの画像ファイルの合計サイズがサーバ上の記憶領域の残り容量を超える場合は,それらの画像の類似度を利用して,残り容量を超えないようにアップロード対象の画像の数を自動調整できるようになる。
以下,本発明における一実施形態について図面を参照して詳細に説明する。
<本実施例の概要>
本実施例では,ユーザPC(クライアント)から,フォトシェアリングサービスを提供するサーバに対して,ユーザの操作により画像ファイルをアップロードする。サーバではユーザごとに「アルバム」という記憶領域を提供している。アルバムとして使用可能な記憶領域の容量はユーザごとにあらかじめ決められている。ユーザがクライアントから画像ファイルがアップロードすると,サーバはアップロードされた画像ファイルをアルバムに格納する。
<単位系について>
本実施例において,ファイルのサイズを表わす単位としてバイト(byte)を使用する。また,210(1,024)バイトを表わす単位の略記法としてKB(kilobyte)を使用する。また,220(1,048,576)バイトを表わす単位の略記法としてMB(megabyte)を使用する。
国際単位系(SI;International System of Units)では接頭辞としての小文字のk(kilo)は103を表わし,同じく接頭辞としての大文字のM(mega)は106を表わすことになっている。また,国際電気標準会議(IEC;International Electrotechnical Commission)の決定においては,国際単位系の接頭辞と混同されることのないように,210を表わす接頭辞としてKi(kibi)を使用し,220を表わす接頭辞としてMi(mebi)を使用することになっている。
以上の規格に従えば,210バイトはKiB(kibibyte),220バイトはMiB(mebibyte)と表記すべきところであるが,本実施例ではコンピュータ業界の慣用に従って,210バイトをKB,220バイトをMBと表記することにする。
<全体構成>
まず,図1を参照して本実施形態の全体構成を説明する。
101は画像ファイルのアップロード操作を行なうユーザPCであるクライアントであり,ネットワークインタフェースを経由してインターネット103に接続されている。102は記憶領域を提供し,画像ファイルのアップロードを受け付けるサーバであり,ネットワークインタフェースを経由してインターネット103に接続されている。クライアント101とサーバ102はそれぞれインターネット103を通じ,HTTPプロトコルを使用して相互に通信可能である。
<コンピュータ装置の構成>
次に,図2を参照して,本実施例で使用するコンピュータ装置の構成について説明する。
図2は,クライアント101およびサーバ102の構成の一例を示すブロック図である。201はRAM 202に格納されている制御プログラムに従って本装置全体の制御を行なうCPUである。202はCPU 201が実行する本装置の制御プログラムや,文書画像等のデータを格納するRAM等の内部記憶部である。203はCPU 201の制御の下にインターネット等のネットワークとの接続を行なってデータ等を送受信するネットワークインタフェースである。204はデータを保存する磁気ディスク等の外部記憶装置である。205はディスプレイ,206はキーボード,207はマウス等のポインティングデバイスである。RAM 202に格納されているプログラムは,同じくRAM 202に格納されているOS(Operating System)の機能を必要に応じて使用し,RAM 202に一時記憶するデータの内容を読み書きしたり,外部記憶装置 204上でデータを読み書きしたり,ネットワークインタフェースを通じてデータの送受信を行なったり,キーボード206やポインティングデバイス207からの入力を受け取ったり,ディスプレイ205に表示を行なったりすることで,所定の動作を行なう。
<全体のブロック図>
次に,図3を参照して,本実施例で使用するコンピュータ装置内のブロック構成について説明する。
図3は,物理的に図1のような構成を取るクライアント101,サーバ102,インターネット103において,本実施例の動作に主として関わる論理ブロック,すなわちプログラムモジュール,ファイルエンティティ,データベースエンティティ,および通信経路の構成を示すブロック図である。
301はクライアント101のブロック境界を表わし,ここではOSの制御下にある環境を指す。アップロードプログラム302は,通常は外部記憶装置204に保存されているが,ユーザ,OS,あるいは別のプログラムから実行が指示されると,OSの制御によりRAM 202に読み込まれ,実行可能な状態となる。303は外部記憶装置204に保存されている画像ファイルである。画像ファイル303は任意のプログラムから読み書き可能であるが,ここでは画像ファイル303とアップロードプログラム302との間の矢印およびその方向が示すように,アップロードプログラム302が画像ファイル303の内容を読み込む関係のみ存在する。アップロードプログラム302の動作は図6等を用いて後述する。
304はサーバ102のブロック境界を表わし,ここではOSの制御下にある環境を示す。アルバムクエリCGI 305とアップロードCGI 307はCGI(Common Gateway Interface)プログラムである。これらのCGIプログラムは,通常は外部記憶装置204に保存されているが,クライアント301からHTTPリクエストの形式で実行要求があると,OSおよびWebサーバプログラム(図示しない)の制御によりRAM 602に読み込まれ,実行可能な状態となる。CGIプログラムは実行に必要な引数をHTTPリクエストのリクエストパラメータを通じて受信し,実行結果はHTTPレスポンスを通じて送信するように動作する。306は外部記憶装置204上にデータベースプログラム(図示しない)が構成したデータベースである。CGIプログラム305あるいは307はデータベースプログラムやデータベースドライバ(図示しない)の機能を必要に応じて利用することで,データベース306の内容を読み書き可能である。ここではサーバブロック304内の矢印およびその方向が示すように,アルバムクエリCGI 305がデータベース306の内容を読み込み,アップロードCGI 307がデータベース306の内容に書き込む。アルバムクエリCGI 305とアップロードCGI 307の動作は図9,図21等を用いて後述する。
308と309はクライアント実行環境301とサーバ実行環境304との間で使用されるHTTP通信経路を示す。各通信経路はクライアント301のアップロードプログラム302からサーバ304のCGIプログラム305,307の実行を要求するHTTPリクエストの形式でインターネット103上にコネクションが作成され,サーバ304のCGIプログラム305,307がクライアント301のアップロードプログラム302にHTTPレスポンスを返した時点でコネクションを継続する指示がない限り自動的に破棄される。
<データベース構成とレコード>
次に,図4〜図5を参照して,本実施例で使用するデータベースの構成およびレコードについて説明する。
図4は,ユーザ情報を格納するためにデータベース306内に構成されたデータベースの構成,および本実施例で使用するレコードを示す図である。
401はユーザ情報のデータベース構成であり,402〜406はユーザ情報401に含まれる列を示す。402はユーザを識別するために発行するユーザIDであり,PK(Primary Key)を指定しておくことで,ユーザ情報データベース401に含まれる全ての行(レコード)でユーザID 402が重複しないことがデータベースプログラムにより保証される。したがって,ユーザ情報401内のすべてのレコードはユーザID 402をキーとすることで一意に識別可能である。403は認証用のパスワード,404はユーザの氏名,405はユーザのメールアドレスである。406は使用可能な記憶領域としてユーザに割り当てられている容量,すなわちアルバムの最大容量である。単位は前述のようにバイトを使用する。
407は本実施例で使用するユーザ情報のレコードである。図示のように,408〜412にはデータベース構成の402〜406に対応するデータとして,それぞれ「ID1234」,「PAS5678」,「ABC」,「xx@yy.jp」,「1,048,576」が格納されている。ここで,アルバム最大容量は1,048,576バイト,すなわち1MBである。
図5は,アルバム情報を格納するためにデータベース306内に構成されたデータベースの構成,および本実施例で使用するレコードを示す図である。
501はアルバム情報のデータベース構成であり,502〜506はアルバム情報501に含まれる列を示す。502はユーザIDであり,FK(Foreign Key)として402が指定しておくことで,アルバム情報データベース501にレコードを追加する場合,そのユーザID 502は,ユーザ情報データベース401にも同じユーザIDを持つレコードが存在していることがデータベースプログラムにより保証される。503は画像ファイルのファイル名,504は画像ファイルのサイズ(単位はバイト),505は画像ファイルのサムネイルデータ,506は画像ファイルのデータである。サムネイルデータ505と画像ファイルのデータ506はバイナリデータをそのままデータベースに格納するが,そのままでは図示できないため,本実施例で図示する場合には画像ファイルの内容を表示して代用する。
507〜509は本実施例で使用するアルバム情報のレコード,すなわち407に示すユーザのアルバム情報を保持するレコードである。レコード506にはデータベース構成の502〜506に対応するデータとして,それぞれ「ID1234」,「車.jpg」,「200,000」,(図示のサムネイルに相当するバイナリデータ),(図示の画像に相当するバイナリデータ)が格納されている。ここで,画像ファイルサイズは200,000バイト,すなわち約195KBである。508および509も507と同様である。
<全体動作>
次に,図6を参照して,本実施例の全体動作について説明する。
図6は本実施例の全体動作を示すためのUML(Unified Modeling Language)シーケンス図である。ここでは主に正常系の動作のみが示されており,異常系(エラー発生時や処理失敗時)の動作については示されていない場合がある。
601はクライアント101を操作するユーザである。
602はアップロードプログラム302のインスタンス,すなわちアップロードプログラム302がクライアント101のRAM 202に読み込まれて実行可能な状態となっている実体を表わす。
603はクライアント301とサーバ304とのネットワーク境界を表わす。これはUMLの表記ではなく,シーケンス図の左側(クライアント側)と右側(サーバ側)とが別の環境で実行されていることを示すための便宜的な表記である。
604はアルバムクエリCGI 305のインスタンス,すなわちアルバムクエリCGI 305がサーバ102のRAM 202に読み込まれて実行可能な状態となっている実体を表わす。605はアップロードCGI 307のインスタンスである。
まず,ユーザ601がクライアント101のキーボード206やポインティングデバイス207を使用して,アップロードプログラム302の実行をOSに指示する(シーケンス606)。OSはアップロードプログラム302を外部記憶装置204からRAM 202に読み込んで,アップロードプログラム302のインスタンス602を作成する。
アップロードプログラム602は実行が開始されると,まず認証情報入力画面をディスプレイ205に表示する(シーケンス607)。ユーザ601は表示された認証情報入力画面に対してクライアント101のキーボード206やポインティングデバイス207を使用して認証情報を入力する(シーケンス608)。認証情報入力画面の表示および入力の詳細については図7・図8を用いて後述する。
アップロードプログラム602はユーザ601の認証情報の入力が終わると,ネットワーク103を経由してサーバ102に対しHTTPリクエストの形式でアルバムクエリCGI 305の実行を依頼する(シーケンス609)。この際,ユーザ601が入力した認証情報を実行時引数として渡す。サーバ102のOSおよびWebサーバプログラムはアップロードプログラム602とのHTTPコネクション308を確立し,アルバムクエリCGI 305を外部記憶装置204からRAM 202に読み込んで,アルバムクエリCGIのインスタンス604を作成する。アルバムクエリCGI 604は引数で指定された認証情報をチェックした後,引数で指定されたユーザのユーザ情報およびアルバム情報をHTTPレスポンスの形式でアップロードプログラム602に返す。アルバムクエリCGI 604の動作の詳細については図9を用いて後述する。
アップロードプログラム602はアルバムクエリCGI 604の呼び出しが終わると,HTTPレスポンスで返された情報を利用してアップロード画面をディスプレイ205に表示する(シーケンス610)。ユーザ601は,表示されたアップロード画面に対して,クライアント101のキーボード206やポインティングデバイス207を使用して,アップロードする画像ファイルを追加したり,追加した画像ファイルをアップロードするかどうかを選択したりする(シーケンス611)。アップロードプログラム602はユーザ601が画像を追加したり選択したりするたびに,選択中の画像の合計サイズを計算し,シーケンス609で得られたアルバム情報のうち残り容量と比較して,容量オーバーなら類似画像の選択を自動解除し(シーケンス612),アップロード画面の表示を更新する(シーケンス613)。シーケンス611〜613はユーザ601が繰り返し実行可能である。アップロード画面の表示の詳細については図10〜図20を用いて後述する。
ユーザ601はアップロードする画像ファイルの準備が終了すると,すなわちシーケンス611〜613をこれ以上繰り返す必要がないと判断すると,クライアント101のキーボード206やポインティングデバイス207を使用し,アップロードプログラム602に画像ファイルのアップロードを指示する(シーケンス615)。アップロードプログラム602は,ネットワーク103を経由してサーバ102に対しHTTPリクエストの形式でアップロードCGI 307の実行を依頼する(シーケンス615)。この際,ユーザ601のユーザ情報に加えて,ユーザ601の登録・選択した画像ファイルについての情報も実行時引数として渡す。サーバ102のOSおよびWebサーバプログラムはアップロードプログラム602とのHTTPコネクション309を確立し,アップロードCGIを外部記憶装置204からRAM 202に読み込んで,アップロードCGIのインスタンス605を作成する。アップロードCGI 605は引数で指定された画像ファイルを引数で指定されたユーザのアルバムに登録し,処理結果をHTTPレスポンスの形式でアップロードプログラム602に返す。この動作(シーケンス615)はアップロードする画像ファイルの数だけ繰り返す。アップロードCGI 605の動作の詳細については図21・図22を用いて後述する。
以上が本実施例の全体動作である。以下,個々の動作を詳細に説明する。
<認証情報入力画面>
図7・図8を参照して,認証情報入力画面の表示および入力について説明する。
図7は,アップロードプログラム602がシーケンス607で表示する認証情報入力画面である。ユーザ601はクライアント101のキーボード206やポインティングデバイス207を使用して入力や操作が可能である。701はユーザIDの入力フィールド,702はパスワードの入力フィールドである。ユーザ601がOKボタン703を操作すると,アップロードプログラム602は入力終了と判断する。ユーザ601がキャンセルボタン704を操作すると,アップロードプログラム602はプログラムの実行がキャンセルされたと判断し,プログラムを終了する(キャンセルボタン704操作時の動作は図6に図示していない)。
図8は,ユーザ601がシーケンス608で認証情報入力画面に入力した状態を示す画面である。ここでは,ユーザ情報データベース401のレコード407に対応する認証情報を入力するものとする。ユーザID入力フィールド801にはユーザID 408に対応して「ID1234」が入力されている。パスワード入力フィールド802はセキュリティ上の観点から入力文字がエコーバックされず,すべての文字が「*」で表示されているが,ここではユーザIDと同じくパスワード409に対応して「PAS5678」が入力されているものとする。
<アルバムクエリCGIの動作>
図9を参照して,アルバムクエリCGIの動作について説明する。
図9は,アルバムクエリCGI 604の動作(シーケンス609)を示すフローチャートである。
ステップS901はプログラムの開始である。図7に示す認証情報入力画面でユーザ601が入力したユーザIDとパスワードが,HTTPリクエストのパラメータとしてアップロードプログラム602から渡されるので,それぞれ変数userIdとpasswordに代入する。ここでは,図8に示したようにユーザIDとして「ID1234」,パスワードとして「PAS5678」が渡されたものとする。
ステップS902で,userIdがユーザID 402と一致するレコードをユーザ情報データベース401から検索する。図4に示したようにユーザID 402はPKであることから,userIdとユーザID 402が一致するレコードは多くとも1件しか存在しない。
ステップS903ではステップS902でレコードが見つかったかどうかを判定する。レコードが見つからなければユーザIDが不正であるとしてステップS908に進んでプログラムを終了し,アップロードプログラム602に失敗を返す。レコードが見つかればステップS904に進む。ここではuserIdが「ID1234」であることから,図4の407に示したレコードが見つかるので,ステップS904に進む。
ステップS904では,ステップS902で見つかったレコードのパスワード403と,引数で渡されたpasswordとが一致するかどうかを判定する。パスワードが一致しなければパスワードが不正であるとしてS908に進んでプログラムを終了し,アップロードプログラム602に失敗を返す。パスワードが一致すればステップS905に進む。ここでは見つかったレコード407のパスワードが409に示すように「PAS5678」であり,passwordも同じく「PAS5678」であることから,ステップS905に進む。
ステップS905では,userIdユーザID 502と一致するレコードをアルバム情報データベース501からすべて検索し,見つかったレコードの画像ファイルサイズ504を累計する。ここではuserId=「ID1234」であることから,図5の507〜509に示したレコードが3件見つかるので,画像ファイルサイズを累計した結果,200,000+200,000+200,000=合計600,000バイトという結果を得る。
ステップS906では,ユーザ情報データベース401のアルバム最大容量406から,ステップS905で求めた画像ファイルの合計サイズを引いて,アルバムの利用可能サイズを計算する。ここでは,アルバム最大容量が412に示すように1,048,576バイトであり,画像ファイルの合計サイズが上記のように600,000バイトであることから,1,048,576−600,000=448,576バイトという結果を得る。
ステップS907では,プログラムを終了し,アップロードプログラム602に成功を返す。この際,HTTPレスポンスの一部として戻り値を返す。ここでは,見つかったレコード407の氏名410である「ABC」と,ステップS906で求めたアルバム利用可能サイズ「448,576」を返す。
<アップロード画面(初期画面)>
図10〜図11を参照して,アップロード画面の初期画面について説明する。
図10はアルバムクエリCGI 604の呼び出し(シーケンス609)が失敗を返した時にアップロードプログラム602がディスプレイ205に表示する認証エラー画面である。図9に示したように,アップロードプログラム602が失敗を返すのは,引数のユーザIDまたはパスワードが不正な場合なので,図10では「ユーザIDが見つからないか,またはパスワードが一致しません」というメッセージを表示している。「ユーザIDが見つからない」のか「パスワードが一致しない」のか,いずれの理由で失敗したのかを明示していないのはセキュリティ上の理由による。1001はOKボタンであり,ユーザ601がキーボード206またはポインティングデバイス207を使用して操作すると,アップロードプログラム602は認証エラー画面を消去し,シーケンス607の認証情報入力画面表示に戻る(認証エラー画面表示に関わる動作は図6に図示していない)。
図11は,アップロードプログラム602がシーケンス610でディスプレイ205に表示するアップロード画面である。
1101は固定のメッセージ部分であるが,一行目の一部に,シーケンス609の戻り値として返された氏名「ABC」を使用している。
1102はキャンバスであり,この矩形領域に画像ファイルを追加する。追加する方法はクライアント101の外部記憶装置204に存在する画像ファイル303をユーザ601がポインティングデバイス207を使用してドラッグし,キャンバス1102にドロップすることで行なう。
1103はアップロード対象の画像ファイルの合計サイズとファイル数を表示する領域である。ここではまだ画像ファイルが追加されていないので,0KB(0ファイル)と表示されている。
1104はシーケンス609の戻り値として返されたアルバム利用可能サイズを表示する領域である。ここでは「448,576バイト」=「438.063キロバイト」=「約438.1キロバイト」であることから,「438.1KB」と表示している。
1105はアップロードボタンである。ユーザがキーボード206またはポインティングデバイス207を使用してアップロードボタン1105を操作すると,キャンバス1102に追加した画像ファイルのアップロードをアップロードプログラム602に指示することになる。
<アップロードプログラム内部データ構造>
図12を参照して,アップロードプログラムの内部データ構造について説明する。
図12は,アップロード画面のキャンバス1102に画像ファイルが追加された時(シーケンス611)に,追加された画像ファイルを管理するために,アップロードプログラム602がRAM 202に割り当てて使用するデータ構造を表わす図である。
1201は一つの画像ファイルに対応するデータ構造を表わす。このデータ構造をセルと呼ぶ。1202は画像ファイルのファイル名であり,キャンバス1102に画像ファイルがドロップされた際にOSから通知される。1203は画像ファイルのサイズであり,キャンバス1102に画像ファイルがドロップされた際に,アップロードプログラム602がOSに問い合わせることで取得する。単位はバイトである。1204は画像データであり,同じくキャンパス1102に画像ファイルがドロップされた際に,アップロードプログラム602が画像ファイルの内容を読み込む。1205はサムネイルデータであり,同じくキャンバス1102に画像ファイルがドロップされた際に,アップロードプログラム602が画像データ1204を元にして縮小画像を生成する。画像データ1204とサムネイルデータ1205はバイナリデータとしてRAM 202に格納するが,そのままでは図示できないため,本実施例で図示する場合は画像データまたはサムネイルデータの内容を表示して代用する。1206はチェックフラグであり,追加した画像ファイルを実際にアップロードするかどうかを管理するために使用する。チェックフラグ1206は「on」(アップロードする)または「off」(アップロードしない)のいずれかの状態を取る。画像ファイルがドロップされた時点では「on」であるが,その後のユーザの操作またはプログラムの動作により「off」に変更される場合がある。
1207はセル1201を複数連結したリスト構造を表わす。図示のように画像ファイル1〜画像ファイルnに対応して,セル1208-1〜セル1208〜nを割り当て,これらのセルを順序付けたリストに格納することで,複数のセルおよびそれらの順序関係を管理している。
<アップロードプログラム定義済み処理>
図13〜図15を参照して,アップロードプログラムが使用する定義済み処理について説明する。
<アップロードプログラム定義済み処理(1)>
図13は,セルリスト1207に格納されている画像ファイルのうち,チェックフラグ1206が「on」の状態を持つセルの画像ファイルの数と,それらのファイルサイズ1203の合計(バイト)を計算する処理である。
ステップS1301は定義済み処理の開始である。この定義済み処理は引数を取らない。
ステップS1302は初期化処理である。checkedFileNumは,セルリスト1207において,チェックフラグ1206が「on」の状態を持つセルの数(アップロード対象の画像ファイル数)を表わす。checkedFileBytesは,セルリスト1207において,チェックフラグ1205が「on」の状態を持つセルの画像ファイルのサイズ1203の合計値(アップロード対象の画像ファイルのサイズ合計)を表わす。ステップS1302ではともに0に初期化する。
ステップS1303はセルリスト1207の開始セル1208-1を取得する処理である。
ステップS1304はセルリスト1207をすべて処理したかどうかの判定処理である。すべてを処理した場合はステップS1308に進み,まだ処理していないセルが残っている場合はステップS1305に進む。
ステップS1305はセルのチェックフラグ1206が「on」か「off」かの判定処理である。「on」であればステップS1306に進み,「off」であればステップS1307に進む。
ステップS1306はチェックフラグ1206が「on」のセルが見つかった場合に変数を更新する処理である。まず,アップロード対象の画像ファイル数(checkedFileNum)に1を加算する。次に,アップロード対象の画像ファイルのサイズ合計(checkedFileBytes)に画像ファイルのサイズ1203を加算する。
ステップS1307は次に表示するセルを決定する処理である。セルリストS1207で現在処理しているセルの後続のセルを選択する。たとえばセル1208-1の場合は次のセルとして1208-2を取得し,セル1208-2の場合は次のセルとして1203-3を選択し,以下同様にセル1208-n-1の場合は次のセルとして1208-nを選択する。この後,ステップS1304に戻る。
ステップS1308は定義済み処理の終了である。アップロード対象の画像ファイル数(checkedFileNum)とアップロード対象の画像ファイルのサイズ合計(checkedFileBytes)を戻り値として返す。
<アップロードプログラム定義済み処理(2)>
図14は,2つの画像の類似度を求めるために,2つの画像データ間の重なり率を計算する処理である。
画像の類似度を判定する方法には様々な方法があるが,ここでは単純に重なり率を使って類似画像を判定する。重なり率は2つの画像データの色ヒストグラム(画像データ内の各色の画素数を色ごとに集計したもの)を同一グラフ平面上に重ねて表示した場合に,両ヒストグラムが重複する面積の割合を0.0〜1.0の数値で示すものである。2つの画像データがまったく同じ場合は重なり率が1.0になり,まったく異なる場合(黒一色の画像と白一色の画像の場合など)は重なり率が0.0になる。
重なり率を使用した画像の類似度判定としては,まず2つの画像の重なり率を求め,それをあらかじめ定めておいた閾値(たとえば0.9)と比較して,閾値以上であれば類似画像と判定し,閾値以下であれば類似画像ではないと判定する。
ステップS1401は定義済み処理の開始である。この定義済み処理は引数として2つの画像データimg1とimg2を取る。
ステップS1402は色ヒストグラムを作成する処理である。変数h1[c] は画像データimg1において色cを持つ画素数を全体の画素数で割った数を格納する。h1[c] をすべての色において可算すると1.0になる。同様に変数h2[c] は画像データimg2において色cを持つ画素数を全体の画素数で割った数を格納する。ここでは色ヒストグラムを画像全体の画素数で割って0.0〜1.0に正規化することで,画像データimg1と画像データimg2とで画素数が異なる場合でも処理可能となるようにしている。
ステップS1403は重なり率を計算する処理である。各色cについて,ステップS1402で求めた色ヒストグラムh1[c] と h2[c] のうち値の小さい方を求め,それをすべての色に対して可算することで,重なり率Sを求める。
ステップS1404は定義済み処理の終了である。重なり率Sを戻り値として返す。
<アップロードプログラム定義済み処理(3)>
図15は,セルリスト1207において,指定された閾値以上の類似画像が複数存在し,かつ,それらの画像のチェックフラグが「on」である場合に,一つの画像を除いてすべての画像のチェックフラグを「off」にする処理である。全体構造は,セルリスト1207に対する二重ループ処理(外周ループと内周ループ)になっている。
ステップS1501は定義済み処理の開始である。この定義済み処理は引数として閾値thresholdを取る。
ステップS1502は外周ループの開始処理である。変数cell_1をセルリスト1207の開始セル1208-1で初期化する。1)に進む。
1)〜ステップS1503は外周ループの終了判定処理である。cell_1がセルリスト1207の終了セル1208-nを指している場合は外周ループを終了すると判断し,6)に進む。それ以外の場合はステップS1504に進む。
ステップS1504は内周ループを開始するかどうかの判定処理である。cell_1が指すセルのチェックフラグ1206が「on」の場合は内周ループを開始すると判断し,3)に進む。チェックフラグ1206が「off」の場合は内周ループを開始せず,次の外周ループに進むと判断し,2)に進む。
2)〜ステップS1505は外周ループを一周進める処理である。セルリスト1207で変数cell_1が指すセルの次のセルで変数cell_1を置き換える。1)に進む。
3)〜ステップS1506は内周ループの開始処理である。変数cell_1が指す次のセルで変数cell_2を初期化する。変数cell_1がセルリスト1207の終了セル1208-nを指している場合は特別な場合としてNULLで初期化する。4)に進む。
4)〜ステップS1507は内周ループの終了判定処理である。cell_2がNULLの場合は内周ループを終了すると判断し,2)に進む。それ以外の場合はステップS1508に進む。
ステップS1508は類似画像判定を行なうかどうかの判定処理である。cell_2が指すセルのチェックフラグ1206が「on」の場合は,cell_1とcell_2のチェックフラグ1206がともに「on」なので,類似画像判定を行なうと判断し,ステップS1509に進む。それ以外の場合は5)に進む。
ステップS1509〜ステップS1511は内周ループの本体処理である類似画像判定処理である。ステップS1509は定義済み処理である重なり率計算処理(図14)を呼び出す。引数はcell_1が指すセルの画像データ1204と,cell_2が指すセルの画像データ1204である。重なり率計算処理の戻り値は重なり率なので,これを変数Sに代入する。
ステップS1510は類似画像判定処理である。ステップS1509で求めた重なり率Sと,本定義済み処理呼び出し時の引数である閾値thresholdとを比較し,重なり率Sが閾値thresholdを超えていた場合は,類似画像と判断し,ステップS1511に進む。それ以外の場合は5)に進む。
ステップS1511は類似画像と判定された場合に一方の画像のチェックフラグ1206を「off」にする処理である。ここではcell_2が指すセルのチェックフラグ1206を「off」にする。5)に進む。
5)〜ステップS1512は内周ループを一周進める処理である。セルリスト1207で変数cell_2が指すセルの次のセルで変数cell_2を置き換える。変数cell_2がセルリスト1207の終了セル1208-nを指している場合は特別な場合としてNULLで置き換える。4)に進む。
6)〜ステップS1513は定義済み処理の終了である。戻り値はない。
<アップロードプログラム動作(1)>
図16,図18,図19を参照して,シーケンス612で示したアップロードプログラムの残り容量チェック処理の動作について説明する。
図16はアップロードプログラム602がシーケンス612で残り容量チェック処理を行なう動作を示すフローチャートである。
ステップS1601は開始処理である。
ステップS1602は閾値の初期化処理である。変数thresholdは類似画像判定処理の閾値を表わす。ここでは,閾値thresholdを0.9〜-0.1の範囲で0.1刻みで減らしながら,セルリスト1207で選択中(チェックフラグ=「on」)の画像ファイルの合計サイズがアルバムの利用可能サイズ以下となるまで,その閾値thresholdにおける類似画像を非選択(チェックフラグ=「off」)にしていく。重なり率は0.0〜1.0で定義されているので,thresholdが-0.1になった時点ですべての画像が類似画像と判定され,セルリスト1207のすべての画像が非選択になり,ループはそれ以上続かない。
ステップS1603は定義済み処理であるファイル数とファイルサイズ計算処理(図13)を呼び出す。引数はない。戻り値は選択中の画像ファイルのファイル数とファイルサイズ合計なので,それぞれ変数checkedFileNumとcheckedFileSizeに代入する。
ステップS1604は選択中の画像ファイルのファイルサイズ合計がアルバムの利用可能サイズ以下かどうかの判定処理である。ステップS1603で得た選択中の画像ファイルのファイルサイズ合計checkedFileSizeと,シーケンス609(ステップS907)で得たアルバムの利用可能サイズとを比較する。ファイルサイズ合計がアルバム利用可能サイズ以下であればこれ以上の処理は必要ないので,ステップS1607に進んで本処理を終了する。ファイルサイズ合計がアルバム利用可能サイズを上回っていればステップS1605に進む。
ステップS1605は閾値thresholdの減算処理である。前述のように0.1刻みで減らしていく。
ステップS1606は定義済み処理である類似画像非選択処理(図15)を呼び出す。引数は現在の閾値thresholdである。戻り値はない。この呼び出しで,閾値thresholdを超える類似画像がセルリスト1207にあれば,そのうちの一つを除いてすべての画像が非選択状態になるので,ステップS1603に戻って再度ファイルサイズ合計の計算とアルバム利用可能サイズとの比較処理を行なう。
ステップS1607は終了処理である。
ここで,ユーザ601がアップロード画面1102に画像ファイルを5つ追加した結果,セルリスト1207が図18の1801〜1805に示す状態になったとする。各画像同士の重なり率は1806〜1815に示すとおりである。また,アルバムの利用可能サイズは前述のように448,576バイトである。この場合の残り容量チェック処理の動作について説明する。
ステップS1605で閾値threshold=0.9で類似画像非選択処理(図15)が呼び出される。
類似画像非選択処理の外周ループ一周目はcell_1が画像1801である。画像1801はセルリストの終わりではなく,チェックフラグも「on」なので,ステップS1503の判定処理はN,ステップS1504の判定処理はYとなり,内周ループに進む。内周ループはcell_2の画像1802〜1805に対して判定処理が行なわれる。画像1802〜1805のチェックフラグはすべて「on」なので,ステップS1508の判定処理はすべてYとなり,ステップS1509の重なり率計算処理に進む。画像1801と画像1802〜1805の重なり率は1806〜1809に示したとおりなので,ステップS1510において重なり率Sは閾値threshold=0.9を超えず,ステップS1510の判定処理はすべてNとなり,外周ループ一周目は終わる。
外周ループ二周目はcell_1が画像1802である。画像1802はセルリストの終わりではなく,チェックフラグも「on」なので,ステップS1503の判定処理はN,ステップS1504の判定処理はYとなり,内周ループに進む。内周ループはcell_2の画像1803〜1805に対して判定処理が行なわれる。画像1803〜1805のチェックフラグはすべて「on」なので,ステップS1508の判定処理はすべてYとなり,ステップS1509の重なり率計算処理に進む。画像1802と画像1803〜1805の重なり率は1810〜1812に示したとおりなので,ステップS1510において,cell_2が画像1803の時およびcell_2が画像1804の時に,重なり率Sがthreshold=0.9を超える。この結果,ステップS1510の判定処理がYとなってステップS1511に進み,画像1803と画像1804のチェックフラグ1206が「off」となる。cell_2が画像1805の時は,1812に示す重なり率0.20がthreshold=0.9を超えないため,ステップS1510の判定処理はNとなり,ステップS1511に進まない。以上で外周ループ二週目が終わる。
外周ループ三周目はcell_1が画像1803である。画像1803はセルリストの終わりではないのでステップS1503の判定処理はNとなるが,二周目の外周ループで画像1803のチェックフラグ1206が「off」にされたため,ステップS1504の判定処理はNとなり,内周ループには進まない。以上で外周ループ三周目が終わる。
外周ループ四周目はcell_1が画像1804である。画像1804はセルリストの終わりではないのでステップS1503の判定処理はNとなるが,二周目の外周ループで画像1804のチェックフラグ1206が「off」にされたため,ステップS1504の判定処理はNとなり,内周ループには進まない。以上で外周ループ四周目が終わる。
外周ループ五周目はcell_1が画像1805である。画像1805はセルリストの終わりなのでステップS1503の判定処理がYとなり,ステップS1513に進み,類似画像非選択処理が終わる。
処理終了時のセルリスト1207の様子は図19に示すようになる。画像1803に対応する画像1903のチェックフラグと,画像1804に対応する画像1904のチェックフラグが「off」になっている。
<アップロードプログラム動作(2)>
図17,図19,図20を参照して,シーケンス613で示したアップロードプログラムの画面表示動作について説明する。
図17は,アップロードプログラム602がディスプレイ205にアップロード画面を表示(シーケンス613)する動作を示すフローチャートである。ここで,シーケンス612の実行の結果,セルリスト1207が図19に示す状態になったとする。この時の表示は図20のようになる。この表示動作を図17のフローチャートを参照して説明する。
ステップS1701は開始である。
ステップS1702はメッセージ部分2001を表示する。メッセージの一部に,シーケンス609の戻り値として返された氏名「ABC」を使用する。
ステップS1703はセルリストの開始セルを取得する処理である。ここではセル1901を得る。
ステップS1704はセルリストをすべて表示したかどうかの判定処理である。ここではセル1901はまだセルリストの終了ではないので,ステップS1705に進む。
ステップS1705はセルのファイル名・サムネイル・チェック状態を表示する処理である。ステップS1704で選択したセルのファイル名1202,サムネイル1204,チェックフラグ1205の状態をキャンバス2002に表示する。ここではセル1901が選択されているので,ファイル名「鳥.jpg」を2006に表示し,サムネイルを2007に表示する。チェックフラグについては「on」の状態を『レ』,「off」の状態を『□』と表示する。ここではセル1901のチェックフラグが「on」なので,2008に示す表示を得る。
ステップS1706は次に表示するセルを取得する処理である。ここではセル1901の次のセル1902を選択し,ステップS1704に戻る。
セル1902もセルリストの終了ではないので,ステップS1705に進み,2009〜2011に示す表示を得る。ステップS1706ではセル1902の次のセルとしてセル1903を選択し,ステップS1704に戻る。
セル1903もセルリストの終了ではないので,ステップS1705に進み,2012〜2014に示す表示を得る。セル1903はチェックフラグが「off」なので,チェック状態は2014に示すように『□』で表示されている。ステップS1706ではセル1903の次のセルとしてセル1904を選択し,ステップS1704に戻る。
セル1904もセルリストの終了ではないので,ステップS1705に進み,2015〜2017に示す表示を得る。セル1904もチェックフラグが「off」なので,チェック状態は2017に示すように『□』で表示されている。ステップS1706ではセル1904の次のセルとしてセル1905を選択し,ステップS1704に戻る。
セル1905もセルリストの終了ではないので,ステップS1705に進み,2018〜2020に示す表示を得る。ステップS1706ではセル1905の次のセルが存在しないのでセルリストの終了を取得し,ステップS1704に戻る。
ここでセルリストの終了が選択されたのでステップS1704からS1707に進む。
ステップS1707では定義済み処理であるファイル数とファイルサイズ計算処理(図13)を呼び出す。引数はない。戻り値は選択中の画像ファイルのファイル数とファイルサイズ合計なので,それぞれ変数checkedFileNumとcheckedFileSizeに代入する。ここでは図19に示すセルリストを対象としているので,checkedFileNumは3,checkedFileSizeは100,000+200,000+100,000=600,000となる。
ステップS1708は容量部分の表示処理である。まず,2003に示すように,アップロード対象のファイルの合計サイズと合計数をcheckedFileBytesとcheckeFileNumを利用して表示する。ここではcheckedFileBytesは「600,000バイト」=「585.9375キロバイト」=「約586キロバイト」なので,586KBと表示している。また,checkedFileNumは3なので,3ファイルと表示している。次に,2004に示すように,アルバム利用可能サイズを表示する。ここではシーケンス611の戻り値として返されたアルバム利用可能サイズをそのまま使用し,1104と同じように438.1KBと表示している。
ステップS1709は終了である。
<アップロードCGIの動作>
図21〜図22を参照して,アップロードCGIの動作について説明する。
図21はアップロードCGI 605の動作(シーケンス615)を示すフローチャートである。
ここでは,図19に示す内部状態を持つアップロードプログラム603が図20に示すアップロード画面を表示しているときに,ユーザ601がアップロードボタン2005を操作したとする。アップロードプログラムはチェックフラグ1206が「on」であるセルそれぞれについてアップロードCGI 605を呼び出す。ここではセル1901,1902,1905についてアップロードCGI 605が呼び出される。以下,セル1902に対する呼び出しを例にとって説明する。
ステップS2101はプログラムの開始である。シーケンス608でユーザ601が入力したユーザIDとパスワードが,HTTPリクエストのパラメータとしてアップロードプログラム602から渡されるので,それぞれ変数userIdとpasswordに代入する。ここでは,図8に示したようにユーザIDとして「ID1234」,パスワードとして「PAS5678」が渡されたものとする。また,セルのファイル名と画像ファイルデータもHTTPリクエストのパラメータとしてアップロードプログラム602から渡されるので,それぞれ変数fileNameとfileDataに格納する。セルのファイル名と画像データは1202と1204に保持するファイル名と画像データをそのまま使用する。ここでは,1902に示すファイル名(ライオン1.jpg)と画像データが渡される。
ステップS2102で,userIdがユーザID 402と一致するレコードをユーザ情報データベース401から検索する。図4に示したようにユーザID 402はPKであることから,userIdとユーザID 402が一致するレコードは多くとも1件しか存在しない。
ステップS2103〜S2104はステップS904〜S905と同じ認証処理である。同一のユーザID・パスワードの組み合わせに対してシーケンス609ですでにチェックが行なわれているので,ここでのチェック処理は必ず成功する。ステップS2103〜S2104を行なう目的は,アップロードプログラム602以外からアップロードCGI 605が呼び出された場合に備えることにある。
ステップS2105では,引数で渡された画像ファイルデータfileDataから,画像ファイルサイズを計算し,サムネイルを生成する。ここでは1902に示すように画像ファイルサイズとして200,000が得られる。また,サムネイルは2002に示すのとほぼ同じサムネイルが生成される。図20のサムネイルはクライアント101でアップロードプログラム602が生成したものであり,ここで生成するサムネイルはサーバ102でアップロードCGI 605が生成したものなので,完全に同じものであるとは限らないが,同一の画像ファイルデータから生成したサムネイルなので,表示上はほぼ同じものが生成される。
ステップS2106では,アルバム情報データベース501に新規レコードを追加する。ユーザID 502はuserIdを使用する。画像ファイル名503はfileNameを使用する。画像ファイルサイズ504はステップS1805で計算した画像ファイルサイズを使用する。サムネイルデータ505はステップS1805で生成したサムネイルデータを使用する。画像ファイルデータ506はfileDataを使用する。追加した結果は2205に示すようになる。
ステップS2107とステップS2108はそれぞれ成功と失敗を表わす終了処理である。
ここではセル1902に対する呼び出しを例にとって説明したが,セル1901,1905に対する呼び出しも同様の処理になる。追加した結果はそれぞれ2204,2206に示すようになる。
以上により,図5に示す状態のアルバム情報データベースに対して,セル1901,1902,1905に示す画像ファイルを図21に示すフローチャートに従って追加した結果として,図22に示すアルバム情報データベースを得る。
(その他の実施例)
本実施例では画像ファイルのみを扱ったが,これに限らず,動画や音声ファイルなども同様に扱うことが可能である。
図1で,103はインターネットであるとしたが,コンピュータ装置のネットワークインタフェースを通じてデータ等の送受信が可能な媒体であれば他のネットワークでも構わない。また,HTTPプロトコル以外のプロトコルも,クライアントとサーバ双方のソフトウェアがそのプロトコルを利用可能であれば使用することができる。
図2でプログラムはRAM 202に格納されるとしたが,これに限るものではなく,他の実施例においてはプログラムを外部記憶装置 204から読み込んで実行するようにしてもよいし,ネットワークインタフェース203を介して受信して実行するようにしてもよい。また,図2には示していないが,ROM等の読み出し専用の内部記憶部から読み込んで実行するようにしてもよい。また,キーボード206やポインティングデバイス207の代わりに,あるいはそれらに加えて,音声入力等の他の入力装置を備えることもできる。また,これらすべての構成要素を必ずしも備える必要はなく,サーバ102においては多くの場合ディスプレイ205が省略されたり,キーボード206やポインティングデバイス207を他のコンピュータ装置と共有したりする。
図3において,クライアントのアップロードプログラム302は独立したプログラムであるとしたが,その他にも,Webブラウザ上で動作するActiveX等のプラグインプログラムという形態も考えられる。さらには,Webブラウザ上で動作するJava(登録商標)Script等のスクリプト言語でも実現可能である。
ユーザ情報データベースとアルバム情報データベースは図4と図5に示した以外にも,種々の情報を保持するように構成することができる。たとえばユーザ情報には住所や電話番号,アルバム情報にはアルバム名や作成日時等の情報である。また,サムネイルデータと画像ファイルデータはバイナリデータとしてデータベース内に保持するとしたが,その他の実施方法として,バイナリデータをファイルシステム等にファイルとして保存しておいて,データベースにはその位置を示す情報(URIやファイルシステム内のパス名等)だけを保持するという方法も考えられる。
アルバムはユーザごとに一つだけ対応して存在するようにしたが,もちろんユーザに複数のアルバムを対応付けて,それらをアルバム名等で識別できるようにすることも可能である。また,複数のアルバムを格納することができるフォルダを設けることも可能である。さらに,フォルダが別のフォルダをも格納することができるようにすれば,アルバムは階層構造を有することになる。
図6のシーケンス615では画像ファイルを一つずつアップロードCGIでアップロードするようにしたが,RFC1867・RFC2854に示されるようなプロトコルを使用して複数の画像ファイルをまとめてアップロードできるようにCGIのインタフェースと動作を変更することもできる。また,この逆に,ファイルサイズの大きい画像ファイルを複数回のCGI呼び出しに分割してアップロードできるようにCGIのインタフェースと動作を変更することもできる。
すべてのCGI呼び出しで認証情報(ユーザID・パスワード)を引き回したが,これに代わる方法として,サーバ側でセッションを管理することとし,各CGI呼び出しではそのセッションを識別する情報(セッションID)のみを引き回す手法も一般に行なわれている。
図6の全体図においてアルバムの利用可能容量を取得したのはシーケンス609のみであったが,これに限るものではなく,クライアントではその他のタイミングであるいは定期的にサーバと通信して残り容量を取得し,アップロード画面の表示を更新してもよい。
図6のシーケンス612で残り容量をチェックし,1つ以上の類似画像を非選択にした場合は,アップロード画面でその旨を明示的にユーザに通知してもよい。その他に,類似画像を非選択にする処理を自動で実行するかどうかをあらかじめユーザが設定することや,処理前に実行の可否をユーザに問い合わせるようにすることも可能である。
図11・図20に示したアップロード画面では画像ファイルの追加とチェック状態の変更程度の機能しか存在しないが,これに限定されるものではなく,その他の編集機能,たとえば画像ファイルの削除,ファイル名の変更,画像ファイルの入れ替え・ソート等の機能を付加することもできる。
図15のステップS1509〜S1510および図14では,類似画像判定処理として,画像の色ヒストグラムの重なり率を閾値と比較する手法を用いたが,他の方法を使用することももちろん可能である。一例としては,画像の色情報を使う方法,輪郭情報を使う方法,テクスチャ情報を使う方法,それらの情報を組み合わせて使う方法,あるいは,デジカメで撮影した画像ファイルやスキャナで作成した画像ファイルに格納されている画像作成時刻が極めて極めて近接している画像を類似画像の一時近似として使う方法もある。さらに,画像の回転方向を考慮して,画像が傾いていても類似画像として認識する方法や,一方が縦画像で一方が横画像であっても類似画像として認識する方法もある。
図21のステップS2105でサーバ側で画像ファイルサイズやサムネイルを計算あるいは生成しているが,これらの情報はクライアント側でも保持しているため,アップロードCGIの引数の一部としてクライアントから送ることも可能である。
なお,本発明は,前述した実施形態の機能を実現するソフトウェアのプログラムを,システムあるいは装置に直接あるいは遠隔から供給し,そのシステムあるいは装置のコンピュータがその供給されたプログラムコードを読み出して実行することによっても達成され得る。その場合,プログラムの機能を有していれば,その形態はプログラムである必要はない。
従って,本発明の機能処理をコンピュータで実現するために,そのコンピュータにインストールされるプログラムコード自体およびそのプログラムを格納した記憶媒体も本発明を構成することになる。つまり,本発明の特許請求の範囲には,本発明の機能処理を実現するためのコンピュータプログラム自体,およびそのプログラムを格納した記憶媒体も含まれる。
その場合,プログラムの機能を有していれば,オブジェクトコード,インタプリタにより実行されるプログラム,OSに供給するスクリプトデータ等,プログラムの形態を問わない。
プログラムを供給するための記憶媒体としては,例えば,フレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,MO,CD-ROM,CD-R,CD-RW,磁気テープ,不揮発性のメモリカード,ROM,DVD(DVD-ROM,DVD-R)などがある。
その他,プログラムの供給方法としては,クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し,そのホームページから本発明のコンピュータプログラムそのもの,もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また,本発明のプログラムを構成するプログラムコードを複数のファイルに分割し,それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり,本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWebサーバも,本発明の請求の範囲に含まれるものである。
また,本発明のプログラムを暗号化してCD-ROM等の記憶媒体に格納してユーザに配布し,所定の条件をクリアしたユーザに対し,インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ,その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また,コンピュータが,読み出したプログラムを実行することによって,前述した実施形態の機能が実現される他,そのプログラムの指示に基づき,コンピュータ上で稼動しているOSなどが,実際の処理の一部または全部を行ない,その処理によっても前述した実施形態の機能が実現され得る。
さらに,記憶媒体から読み出されたプログラムが,コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後,そのプログラムの指示に基づき,その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない,その処理によっても前述した実施形態の機能が実現される。
全体構成。 コンピュータ装置の構成。 全体のブロック図。 ユーザ情報データベースの構成,本実施例で使用するレコード。 アルバム情報データベースの構成,本実施例で使用するレコード。 全体動作のシーケンス図。 認証情報入力画面。 認証情報入力例。 アルバムクエリCGI動作フローチャート。 認証エラー画面。 アップロード画面(初期表示)。 アップロードプログラム内部データ構造。 定義済み処理(ファイル数とファイルサイズの計算)フローチャート。 定義済み処理(重なり率計算)フローチャート。 定義済み処理(類似画像非選択)フローチャート。 残り容量チェック処理フローチャート。 アップロード画面表示フローチャート。 画像ファイルを追加したセルのリスト。 残り容量チェック処理で類似画像が非選択になったセルのリスト。 画像ファイルを追加したアップロード画面。 アップロードCGI動作フローチャート。 アップロード後のアルバム情報データベース。
符号の説明
101 クライアント
102 サーバ
103 ネットワーク
201 CPU
202 RAM
203 ネットワークインタフェース
204 外部記憶装置
205 ディスプレイ
206 キーボード
207 ポインティングデバイス

Claims (6)

  1. 所定容量のデータ記憶領域を提供するサーバにネットワークを介して接続され,前記データ記憶領域にファイル転送が可能なクライアントコンピュータであって,
    入力デバイスと,
    表示デバイスと,
    前記サーバから前記データ記憶領域の空き容量の情報を取得する取得手段と,
    前記取得手段による取得処理の実行後に,前記データ記憶領域に転送するファイルをユーザに登録させるためのGUIを前記表示デバイスに表示させる表示制御手段と,
    表示した前記GUIに対する前記入力デバイスによる指示に基づいて前記データ記憶領域に転送するファイルを登録する登録手段と,
    前記登録手段によって登録されたファイルを前記データ記憶領域に転送するかどうかを選択する選択手段と,
    前記選択手段によって現在選択されているファイルの合計ファイル容量を計算する計算手段と,
    を有し,
    前記登録手段により登録されたファイルがすべて選択された場合の前記合計ファイル容量が前記データ記憶領域の空き容量を超える場合は,前記登録されたファイルのうち類似していると判断されるものを自動的に非選択にする手段を有することを特徴とするクライアントコンピュータ。
  2. 前記GUIは,前記選択手段により選択されたファイルの転送指示を送出するための指示ボタンをさらに含むことを特徴とする請求項1に記載のクライアントコンピュータ。
  3. 所定容量のデータ記憶領域を提供するサーバにネットワークを介して接続され,前記データ記憶領域にファイル転送が可能なクライアントコンピュータの制御方法であって,
    前記サーバから前記データ記憶領域の空き容量の情報を取得する取得ステップと,
    前記取得ステップの実行後に,前記データ記憶領域に転送するファイルをユーザに登録させるためのGUIを表示デバイスに表示させる表示制御ステップと,
    表示した前記GUIに対する入力デバイスによる指示に基づいて前記データ記憶領域に転送するファイルを登録する登録ステップと,
    前記登録ステップによって登録されたファイルを前記データ記憶領域に転送するかどうかを選択する選択ステップと,
    前記選択ステップによって現在選択されているファイルの合計ファイル容量を計算する計算ステップと,
    を有し,
    前記登録ステップにより登録されたファイルがすべて選択された場合の前記合計ファイル容量が前記データ記憶領域の空き容量を超える場合は,前記登録されたファイルのうち類似していると判断されるものを自動的に非選択にするステップを有することを特徴とするクライアントコンピュータの制御方法。
  4. 所定容量のデータ記憶領域を提供するサーバにネットワークを介して接続され,前記データ記憶領域にファイル転送が可能なクライアントコンピュータを制御する制御プログラムであって,
    前記サーバから前記データ記憶領域の空き容量の情報を取得する取得ステップと,
    前記取得ステップの実行後に,前記データ記憶領域に転送するファイルをユーザに登録させるためのGUIを表示デバイスに表示させる表示制御ステップと,
    表示した前記GUIに対する入力デバイスによる指示に基づいて前記データ記憶領域に転送するファイルを登録する登録ステップと,
    前記登録ステップによって登録されたファイルを前記データ記憶領域に転送するかどうかを選択する選択ステップと,
    前記選択ステップによって現在選択されているファイルの合計ファイル容量を計算する計算ステップと,
    を有し,
    前記登録ステップにより登録されたファイルがすべて選択された場合の前記合計ファイル容量が前記データ記憶領域の空き容量を超える場合は,前記登録されたファイルのうち類似していると判断されるものを自動的に非選択にするステップを有することを特徴とする制御プログラム。
  5. 請求項4に記載のプログラムを格納したコンピュータ読み取り可能な記憶媒体。
  6. 所定容量の情報記憶領域を提供するサーバと,ネットワークを介してそのサーバにファイル転送が可能なクライアントとを含むネットワークシステムであって,
    前記サーバは,
    前記クライアントからの指示に応答して前記データ記憶領域の空き容量を検査しその結果を前記クライアントに返す空き容量検査手段を有し,
    前記クライアントは,
    入力デバイスと,
    表示デバイスと,
    前記サーバに指示を発行することで前記空き容量検査手段による空き容量の情報を取得する取得手段と,
    前記取得手段による取得処理の実行後に,前記データ記憶領域に転送するファイルをユーザに登録させるためのGUIを表示デバイスに表示させる表示制御手段と,
    表示した前記GUIに対する前記入力デバイスによる指示に基づいて前記データ記憶領域に転送するファイルを登録する登録手段と,
    前記登録手段によって登録されたファイルを前記データ記憶領域に転送するかどうかを選択する選択手段と,
    前記手段によって現在選択されているファイルの合計ファイル容量を計算する計算手段と,
    を有し,
    前記登録手段により登録されたファイルがすべて選択された場合の前記合計ファイル容量が前記データ記憶領域の空き容量を超える場合は,前記登録されたファイルのうち類似していると判断されるものを自動的に非選択にする手段を有する
    ことを特徴とするネットワークシステム。
JP2005124986A 2005-04-22 2005-04-22 サーバにファイルを転送するためのクライアントコンピュータ装置及びその制御方法及びそのプログラム及びそれを含むシステム Withdrawn JP2006302093A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005124986A JP2006302093A (ja) 2005-04-22 2005-04-22 サーバにファイルを転送するためのクライアントコンピュータ装置及びその制御方法及びそのプログラム及びそれを含むシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005124986A JP2006302093A (ja) 2005-04-22 2005-04-22 サーバにファイルを転送するためのクライアントコンピュータ装置及びその制御方法及びそのプログラム及びそれを含むシステム

Publications (1)

Publication Number Publication Date
JP2006302093A true JP2006302093A (ja) 2006-11-02

Family

ID=37470285

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005124986A Withdrawn JP2006302093A (ja) 2005-04-22 2005-04-22 サーバにファイルを転送するためのクライアントコンピュータ装置及びその制御方法及びそのプログラム及びそれを含むシステム

Country Status (1)

Country Link
JP (1) JP2006302093A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8223371B2 (en) 2008-02-22 2012-07-17 Canon Kabushiki Kaisha Image forming apparatus, data processing method, program, and storage medium
US20140177970A1 (en) * 2012-12-20 2014-06-26 Broadcom Corporation Image subset determination and processing

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8223371B2 (en) 2008-02-22 2012-07-17 Canon Kabushiki Kaisha Image forming apparatus, data processing method, program, and storage medium
US20140177970A1 (en) * 2012-12-20 2014-06-26 Broadcom Corporation Image subset determination and processing
US9311337B2 (en) * 2012-12-20 2016-04-12 Broadcom Corporation Image subset determination and processing

Similar Documents

Publication Publication Date Title
US20050131923A1 (en) Information processing apparatus and its control method
US7433916B2 (en) Server apparatus and control method therefor
JP4795133B2 (ja) 画像形成装置、画像処理方法、該方法を実行する制御プログラム
JP6040731B2 (ja) 連携処理装置、連携処理システム及びプログラム
US20070083527A1 (en) Systems and methods for uploading and downloading files in a distributed network
JP6376851B2 (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
US7827553B2 (en) Registering processing flow in accordance with user parameter
US20090044283A1 (en) Document management apparatus, document management system and method, and computer-readable medium
US8930516B2 (en) Management apparatus, management method, management system, and network device for setting values of application programs
CN101843091B (zh) 电子相机以及数据传送方法
JP5371524B2 (ja) 文書管理システム
JP2011041214A (ja) 文書管理システム及びその制御方法、情報処理装置
US8902462B1 (en) System and control method
US20140320683A1 (en) Devices and methods for performing operations on image data stored in an external storage device
JP2006302093A (ja) サーバにファイルを転送するためのクライアントコンピュータ装置及びその制御方法及びそのプログラム及びそれを含むシステム
JP7415376B2 (ja) 情報処理装置、情報処理方法、プログラム
JP6452458B2 (ja) データ管理装置、データ管理方法、およびプログラム
JP2011087072A (ja) 画像提供サーバ装置およびその制御方法およびプログラム
JP2011086063A (ja) 画像提供サーバ装置およびその制御方法およびプログラム
JP6537406B2 (ja) 画像処理システム
WO2021039129A1 (ja) 情報処理装置、情報処理方法、プログラム
JP2018185685A (ja) 情報処理装置およびその制御方法およびプログラム
WO2021166515A1 (ja) 情報処理方法、サーバ装置、プログラム
JP2012155442A (ja) 情報処理装置、制御方法、プログラム、記録媒体
JP2009175858A (ja) 情報処理装置、その制御方法、プログラム

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080701