質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

リサイズ

コントロール、ウィンドウ、フォームやスクリーンのサイズ変更を指します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

2763閲覧

CanvasとFileAPIを使用して、リサイズした画像をoracleに保存したい

Chumi

総合スコア19

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

リサイズ

コントロール、ウィンドウ、フォームやスクリーンのサイズ変更を指します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2015/11/18 05:07

編集2015/11/18 05:37

いつもお世話になっております。
現在、実装した機能に対する方法を考えていますが、
あまりスムーズとは思えません。
よりスマートな方法がございましたらご教授いただけないでしょうか。

###ソフトウェア
PHPを使用した、スマホ上ブラウザで動くwebアプリケーション

###実装したい機能
1.撮影画面にて、「撮影」ボタンで、スマホで撮影orカメラロールから画像を選択する。(最大5枚)
2.画面にサムネイルを表示させる。
3.「送信」ボタンで画像をサーバーに送信する。
4.サーバーではoracleに保存する。
5.画面遷移後、再び撮影画面を表示した際に、送信済みの画像のサムネイルを表示させる。

※スマホで撮影した画像はサイズが大きいので、リサイズしてDBに保存されるようにしたい。
※画面遷移するたびに、スムーズに画像のサムネイルを表示したい。
※oracleとの接続にはoci8を利用する。

###考えた方法

  • 画像保存

-ローカル
1.FileApiで撮影orカメラロールから選択(input type = “file”)
2.canvasでリサイズする オリジナル→小さいサイズ(500500以内)・サムネイル(200200以内)の2種
参考URL1
参考URL2
3.imgタグでサムネイルの方を表示する
参考URL
4.canvasから出力できるPNG(base64)をblobに変換して2種の画像をPOST
参考URL

-サーバー
5.受け取った2種のblobデータをフォルダに保存
参考URL
6.フォルダに保存されているデータをOCi8にてoracleに保存
参考URL

  • 画像表示

1.サムネイルをGETされたらblobデータを書き出す。(サムネイルの方)
2.imgタグでサムネイルを表示する。

以上です。

何かもっと簡単に実現できそうな方法やライブラリなど、
アドバイスがありましたら、どうぞ宜しくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

数か月経過してますが、ベストアンサーがついてたので気になりました。
「数MBもある画像データをモバイル環境からサーバ側に送信してサーバ側でリサイズする」という方法が支持されていますが、そうは思いません。モバイル環境においてはデータ通信は従量制のものが多いですし、なるべく小さいサイズのデータをやりとりするように考えることがよいデザインだと思います。
つまり質問者様の最初の考え通り、クライアント側でJavaScriptでCanvasに描画してリサイズするのがいいでしょう。すぐ終わる処理です。負荷にはなりません。

投稿2016/02/19 02:05

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chumi

2016/02/19 02:41

時間が経ってしまった質問ですが、コメントありがとうございます。 いただいた回答にベストアンサーはつけましたが、実際には上記のような処理を実装させていただきました。 回りくどいことをしましたが、 今のところ端末での処理速度もまったく問題がありません。 ありがとうございます。
guest

0

ベストアンサー

画像の縮小は重い処理ですし、クライアント(特に、モバイル環境)で行わせるのは負荷になるだけです。

PHPにもImageMagickなどの画像処理ツールを使えますので、画像はそのままmultipart/formdataでPOSTしてもらってから、サムネイルはPHPで生成する、というのが適当な処理だと考えます。

投稿2015/11/18 05:18

編集2015/11/18 05:18
maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chumi

2015/11/18 05:31

ありがとうございます。確認してみます。 ただ、通信の懸念事項としまして、スマホで撮影したオリジナルの画像(2M弱)をそのまま送りたくないということがあります。 1画面にて最大5枚は添付できるようにしたいので。。。 そのために縮小して送ることを考えたのですが、それによって処理が重くなるのも確かに問題ですね。 どちらかを我慢するしかないのでしょうか。
guest

0

初めまして
maisumakunさんに同意見です。

5.画面遷移後、再び撮影画面を表示した際に、送信済みの画像のサムネイルを表示させる。

がネックで、モバイル機で行わせると最悪、フリーズまであり得ます。(ファイルサイズ的に)
また、圧縮処理をしているとウエイトタイムだけで数秒から数十秒かかりそうです。(2Mでも)

PHPにもImageMagickなどの画像処理ツールを使えますので、画像はそのままmultipart/formdataでPOSTしてもらってから、サムネイルはPHPで生成する、というのが適当な処理だと考えます。

上記の回答が現状ベストと私は思います。

投稿2015/12/11 13:50

kpiyohiko

総合スコア658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問