ホームページ ウェブフロントエンド jsチュートリアル ブラウザー画像の選択、プレビュー、回転、バッチアップロード用の JS コード実装_javascript スキル

ブラウザー画像の選択、プレビュー、回転、バッチアップロード用の JS コード実装_javascript スキル

May 16, 2016 pm 05:10 PM
画像の回転 画像プレビュー

主に IE バージョンとの互換性について、職場で遭遇したビジネス シナリオを同僚と勉強しました

実際、インターネット上で豆知識や解決策を集めて統合しました。主なポイントは次のとおりです。

1. IE 入力タイプ=ファイル画像プレビューには IE のフィルター CSS が必要です

progid:DXImageTransform.Microsoft.AlphaImageLoader

Chrome/Firefox は File API のファイルリーダーを使用します

2. 画像の回転には、IE は progid:DXImageTransform.Microsoft.Matrix のフィルターを使用します (フィルターはスペースで区切って結合できます)

Chrome/Firefox 用のキャンバスを使用します

3. 画像をアップロードするには、非表示の iframe のフォームを使用して input[type=file] を動的に追加します。 Chrome/Firefox では xhr を使用できますが、修正するのが面倒です

4. このページを更新せずに画像をアップロードし、ファイルを繰り返し選択できるようにするために、iframe を使用して input[type=file] のリストを維持します。これは非常に賢明です。

ブラウザー画像の選択、プレビュー、回転、バッチアップロード用の JS コード実装_javascript スキル

以下のコードを参照してください。これは主にメイン HTML であり、次に 2 つの iframe HTML です。アップロードされたサーバーから返されるデータは、正常にアップロードされたファイルのファイル名であり、プレビュー画像を削除するために使用されます。

コードをコピー コードは次のとおりです:

// 上传回调
        // resultList -> ['file1', 'file2'] 为上传成功的file name
        var uploadCallback = function(resultList){
            console.log(JSON.stringify(resultList));

            var i = 0;
            for(; i < resultList.length; i++){
var index = resultList[i].substr('file'.length);
$(':checkbox[value=' + index + ']').parent().parent().remove();
}
};

$(function(){
// 保存图片旋转的角度,以便提交给服务端处理
var rotateAng = {};
// 用于命名后缀的序号
var cc = 0;

// 如果是chrome/ff,需要用file api去生成img
var genImgTpl = function(input, index){
return '';
            };

            var readImgFromInput = function(_input, index){
                var inputDom = _input[0];
                // chrome/ff
                if(inputDom['files']){
                    var reader = new FileReader();
                    reader.onload = function(e){
                        $('img.main:last').attr({src : e.target.result});
                    }
                    reader.readAsDataURL(inputDom['files'][0]);
                }else{
                    var src = _input[0].value;

                    var imgDom = $('#img' + index);
                    imgDom.attr('src-old', src);
                    imgDom.css({
                        float: 'left',
                        position: 'relative',
                        overflow: 'hidden',
                        width: '195px',
                        height: '195px'
                    });

                    imgDom.css({'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='scale',src=\"" + src + "\")"});
                }
            };

            var showImg = function(_input){
                var index = ++cc;

                _input.addClass('hide');
                _input.attr('name', 'file' + index);
                _input.attr('data-index', index);

                var iframeWin = $('#choose')[0].contentWindow;
                iframeWin.addInput(_input);

                var tpl = '

' + genImgTpl(_input, index) +
                    '' +
                    '' +
                    '
';
                $('#imgDiv').append(tpl);

                readImgFromInput(_input, index);
            };
            var addAnother = function(){
                $('#uploadBtn').before('');
            };

            // input[type=file]的绑定事件
            $('#uploadDiv input').live('change', function(){
                var path = this.value;
                if(!path){
                    return;
                }

                showImg($(this));
                addAnother();
            });

            // 可以在checkbox时候remove input
//            $('#imgDiv input:checkbox').live('change', function(){
//                var isChecked = $(this).is(':checked');
//                console.log(isChecked);
//            });

            $('#imgDiv span.turn-right').live('click', function(){
                // 上次旋转的角度
                var index = $(this).siblings('span.choose').find('input').val();
                var oldAng = rotateAng[index] || 0;
                var newAng = oldAng + 90;
                rotateAng[index] = newAng;

                $('#img' + index).rotate(90);
            });

            // 表单提交时候根据checkbox,删除未choose的input[type=file]
            $('#uploadBtn').click(function(){
                var choosedNum = $('#imgDiv input:checkbox').filter(':checked').length;
                if(!choosedNum){
                    alert('请选择上传文件!');
                    return false;
                }

                // 选中的序号数组
                var choosedIndexList = $('#imgDiv input:checkbox').filter(':checked').map(function(){
                    return this.value;
                }).get();


varchooseIframe = $('#choose')[0].contentWindow ;

var i = 0;

for(; i < selectedIndexList.length; i ){

varindex = selectedIndexList[i];
var inputFile =chooseIframe.$('#uploadDiv input' ).filter('[data-index=' インデックス ']');
uploadIframe.$('#uploadForm').append(inputFile);

var tplInput = ''; }


UploadIframe.doUpload();

return false;
});

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

uniappに画像プレビュー機能を実装する方法 uniappに画像プレビュー機能を実装する方法 Jul 04, 2023 am 10:36 AM

uni-app に画像プレビュー機能を実装する方法 はじめに: モバイル アプリケーション開発では、画像プレビューはよく使用される機能です。 uni-appでは、uni-uiプラグインやカスタムコンポーネントを利用して画像プレビュー機能を実装できます。この記事では、uni-appに画像プレビュー機能を実装する方法をコード例を交えて紹介します。 1. uni-ui プラグインを使用して画像プレビュー機能を実装する uni-ui は、DCloud が開発した Vue.js をベースとしたコンポーネント ライブラリで、豊富な UI 群を提供します。

Vue コンポーネントで画像のプレビューとズームの問題を処理する方法 Vue コンポーネントで画像のプレビューとズームの問題を処理する方法 Oct 09, 2023 pm 09:34 PM

Vue コンポーネントで画像のプレビューとズームの問題を処理するには、特定のコード例が必要です はじめに: 最新の Web アプリケーションでは、画像のプレビューとズームは非常に一般的な要件です。人気のあるフロントエンド フレームワークとして、Vue はこれらの問題に対処するための強力なツールを多数提供します。この記事では、Vue コンポーネントで画像のプレビューとズームを処理する方法を紹介し、具体的なコード例を示します。 1. 画像プレビュー: 画像プレビューとは、ユーザーが画像をクリックするか、画像の上にマウスを置くと、画像の大きなバージョンを表示したり、特定の領域を拡大したりできることを意味します。

JavaScript を使用して画像の回転効果を実現するにはどうすればよいですか? JavaScript を使用して画像の回転効果を実現するにはどうすればよいですか? Oct 20, 2023 pm 07:09 PM

JavaScript を使用して画像の回転効果を実現するにはどうすればよいですか? Web 開発では、商品の 360 度回転画像の表示、画像カルーセル効果の実現など、画像の回転効果を実現する必要があるシナリオによく遭遇します。 JavaScript は、この画像の回転効果を簡単に実現できる強力なスクリプト言語です。以下では、JavaScript に基づいて画像の回転効果を実現する方法と具体的なコード例を紹介します。まず、単純な HTML 構造を作成します。

uniappを使用して画像回転機能を実装する uniappを使用して画像回転機能を実装する Nov 21, 2023 am 11:58 AM

uniapp を使用して画像回転機能を実装する モバイルアプリケーション開発では、写真を撮った後に角度を調整する必要がある場合や、撮影後にカメラを回転させたような効果を得る必要がある場合など、画像を回転する必要があるシナリオに遭遇することがよくあります。写真が達成されました。この記事では、uniapp フレームワークを使用して画像回転機能を実装する方法と具体的なコード例を紹介します。 uniapp は、Vue.js をベースとしたクロスプラットフォーム開発フレームワークで、iOS、Android、H5、その他のプラットフォーム向けのアプリケーションを同時に開発および公開できます。ユニアプリで実装

WeChat アプレットに画像回転効果を実装する WeChat アプレットに画像回転効果を実装する Nov 21, 2023 am 08:26 AM

WeChat ミニ プログラムで画像回転効果を実装するには、特定のコード サンプルが必要です。WeChat ミニ プログラムは、ユーザーに豊富な機能と優れたユーザー エクスペリエンスを提供する軽量のアプリケーションです。ミニ プログラムでは、開発者はさまざまなコンポーネントと API を使用して、さまざまな効果を実現できます。その中で、画像回転効果は、ミニプログラムに興味と視覚効果を加えることができる一般的なアニメーション効果です。 WeChat ミニ プログラムで画像の回転効果を実現するには、ミニ プログラムが提供するアニメーション API を使用する必要があります。以下は、その方法を示す具体的なコード例です。

PHPとGDライブラリを使って画像回転を実現する方法 PHPとGDライブラリを使って画像回転を実現する方法 Jul 12, 2023 am 11:52 AM

PHP および GD ライブラリを使用して画像の回転を実装する方法 画像の回転は一般的な画像処理要件であり、画像を回転することで特殊効果を実現したり、ユーザーのニーズを満たすことができます。 PHP では、GD ライブラリを使用して画像の回転機能を実装できます。この記事では、PHP と GD ライブラリを使用して画像の回転を実装する方法をコード例とともに紹介します。まず、PHP 環境に GD ライブラリ拡張機能がインストールされていることを確認してください。コマンドラインに php-m と入力して、gd モジュールがあるかどうかを確認します。ない場合は、最初にインストールする必要があります。ここでは簡単な

uniappで画像閲覧と画像プレビュー機能を実装する方法 uniappで画像閲覧と画像プレビュー機能を実装する方法 Oct 20, 2023 pm 03:57 PM

uniappで画像閲覧と画像プレビュー機能を実装するにはどうすればよいですか? uniappでは、uni-uiコンポーネントライブラリを利用して画像閲覧や画像プレビュー機能を実装できます。 uni-ui は、DCloud によって開発された Vue.js に基づくコンポーネント ライブラリであり、画像参照コンポーネントや画像プレビュー コンポーネントなどの豊富な UI コンポーネント セットを提供します。まず、uni-ui コンポーネント ライブラリをプロジェクトに導入する必要があります。プロジェクトのpages.jsonファイルを開き、「easycom」フィールドに「un」を追加します。

Vue で画像プレビュー機能を実装するためのヒントとベスト プラクティス Vue で画像プレビュー機能を実装するためのヒントとベスト プラクティス Jun 25, 2023 pm 09:21 PM

Vue は、シングル ページ アプリケーション (SPA) を構築するための人気のある JavaScript フレームワークです。画像プレビューは Web アプリケーションの一般的な機能であり、Vue で画像プレビューを実装する方法は数多くあります。この記事では、Vue で画像プレビュー機能を実装するためのテクニックとベスト プラクティスを詳しく紹介します。 1. Vue プラグインを使用する Vue プラグインは、画像プレビューを実装する簡単な方法を提供します。 Vue プラグインはグローバルに登録できるため、アプリケーション全体で使用できます。一般的に使用される 2 つの Vue プラグインを次に示します。

See all articles