ホームページ > 記事 > ウェブフロントエンド > H5 はカメラを呼び出して写真を撮り、その写真を圧縮します
今回は、H5 がカメラを呼び出して写真を撮り、画像を圧縮するための 注意事項 を説明します。以下は実際的なケースです。見て。
ドキュメントを整理して、カメラを呼び出して写真を撮ったり、画像を圧縮したりするためのサンプルコードを見つけました。共有するために少し整理して整理しました。背景
私は最近h5ページを作成しました。主な機能は、カメラを呼び出して写真を撮るか、アルバムから写真を選択し、写真をbase64に圧縮してからバックエンドサーバーにアップロードすることです。認識結果を返します。 フロントエンドの主な機能ポイントは次のとおりです:H5でカメラ/アルバムを呼び出す
カメラを呼び出す最も簡単な方法 入力ファイル[カメラ]を使用するだけです属性:
<input type="file" capture=camera accept="image/*">//相机 <input type="file" accept="image/*">//相册このメソッドの互換性にはまだ問題がありますが、カメラはiPhoneで通常どおり開くことができますが、クリックした後。 Android スマートフォンでは、カメラ、ギャラリー、ファイル マネージャーなどのオプションが混在しています。インターネットでいろいろ調べましたが、良い解決策が見つからず、書き続けるしかありません。 。 。
画像圧縮
画像圧縮が使用されます。 FileReader
和<canvas>
rreee
次に、圧縮画像の品質ですが、ここでの圧縮率は 80% に設定されており、設定が小さすぎると画像が歪みます。 <canvas> タグを動的に作成し、画像を圧縮します:var MAX_WH=800; var image=new Image(); image.onload=function () { if(image.height > MAX_WH) { // 宽度等比例缩放 *= image.width *= MAX_WH/ image.height; image.height = MAX_WH; } if(image.width > MAX_WH) { // 宽度等比例缩放 *= image.height *= MAX_WH/ image.width; image.width = MAX_WH; } } image.src=dataURL;//dataURL通过FileReader获取それからサーバーにアップロードし、サーバーの結果を表示します。 。 。 iOS スマートフォンで写真を撮影すると、圧縮された後に写真が不可解に回転します。問題の解決を続けます。
IOS画像回転の解決策
まずexif.jsを引用し、EXIF.getDataとEXIF.getTagを通じて写真の方向情報を取得します。var quality=80; var cvs = document.createElement('canvas'); cvs.width = image.width; cvs.heigh = image.height; var context=cvs.getContext("2d"); context.drawImage(image, 0, 0,image.width, image.height); dataURL = cvs.toDataURL('image/jpeg', quality/100);iPhone での写真撮影に対応する各向きの値の意味は次のとおりです:
説明 | |
---|---|
iPhone の横画面撮影、ホームボタンは左側にあります、写真を元の位置に対して 180 度回転しました | |
iPhone のポートレート撮影、ホームボタンを下にして (通常の携帯電話を持つ方向)、写真を元の位置に対して反時計回りに 90 度回転できます | |
このとき、ホームボタンが上にあり、方向を取得した後、写真が時計回りに90度回転します。画像の情報を取得し、取得した値に基づいて対応する回転操作を実行します。 | そして写真をアップロードしたところ、IOSでは写真が正常であることがわかりました。 |
H5 での履歴モードの使用の詳細な説明
ローカルストレージとセッションストレージの使用記録以上がH5 はカメラを呼び出して写真を撮り、その写真を圧縮しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。