Inhaltsverzeichnis
Antwortinhalt:
Das Folgende ist ein Zitat aus meiner vorherigen Antwort
Heim Backend-Entwicklung PHP-Tutorial javascript - Wie lade ich Bilder auf Mobilgeräten hoch? , und das Bild vor dem Hochladen auf eine bestimmte Größe komprimieren?

javascript - Wie lade ich Bilder auf Mobilgeräten hoch? , und das Bild vor dem Hochladen auf eine bestimmte Größe komprimieren?

Aug 30, 2016 am 09:36 AM
html javascript php

Wie lade ich Bilder auf dem Handy hoch? , und das Bild vor dem Hochladen auf eine bestimmte Größe komprimieren?

Antwortinhalt:

Wie lade ich Bilder auf dem Handy hoch? , und das Bild vor dem Hochladen auf eine bestimmte Größe komprimieren?

  1. Wenn Sie für den asynchronen Upload weiterhin die direkte Datei-Upload-Methode verwenden möchten, können Sie HTML5 verwenden. FormData Informationen zu bestimmten Vorgängen finden Sie in diesem Blog. http://www.cnblogs.com/lhb25/...

  2. Ich habe eine andere Möglichkeit, Bilder asynchron hochzuladen. Konvertieren Sie das Bild zunächst in eine Base64-Zeichenfolge und senden Sie die Base64-Zeichenfolge dann an den Server. Nachdem der Server sie empfangen hat, können Sie die Base64-Zeichenfolge mithilfe einer bestimmten API in Bildinhalte konvertieren. Das Folgende ist die spezifische Implementierungsmethode:

<code>var getObjectURL = function(file) {
        var url = null;   
        if (window.createObjectURL !== undefined) { // basic  
            url = window.createObjectURL(file);  
        } else if (window.URL !== undefined) { // mozilla(firefox)  
            url = window.URL.createObjectURL(file);  
        } else if (window.webkitURL !== undefined) { // webkit or chrome  
            url = window.webkitURL.createObjectURL(file);  
        }  
        return url;
    }</code>
Nach dem Login kopieren
Die Methode

getObjectURL wird verwendet, um das Bilddateiobjekt in der eingehenden Eingabe in eine temporäre URL zu konvertieren, und diese URL gehört zur gleichen Domäne.

<code>var converImgTobase64 = function(url, callback, outputFormat) {
        var canvas = document.createElement('CANVAS'),
        ctx = canvas.getContext('2d'),
            img = new Image;
        img.crossOrigin = 'Anonymous';
        img.onload = function(){
            canvas.height = img.height;
            canvas.width = img.width;
            ctx.drawImage(img,0,0);
            var dataURL = canvas.toDataURL(outputFormat || 'image/png');
            callback.call(this, dataURL);
            canvas = null; 
        };
        img.src = url;
    }</code>
Nach dem Login kopieren
Die

converImgTobase64-Methode besteht darin, die oben erhaltene URL zu übergeben und sie über die CanvasAPI in eine Base64-Zeichenfolge umzuwandeln. Beachten Sie, dass sich diese URL in derselben Domäne befinden darf und nicht domänenübergreifend sein darf. Daher ist getObjectURL diese Methode erforderlich.

Beispiel:

<code>var input = $("input[type=file]")[0],
    src = getObjectURL(input.files[0]);

converImgTobase64(src, function(base64Str) {
    //处理base64Str相关的callback,可以直接在这里发送ajax请求。
});
</code>
Nach dem Login kopieren

Der Code dieses Teils der Komponente befindet sich in einer meiner Util-Bibliotheken. Sie können gerne darauf verweisen und Vorschläge zur Korrektur machen~~~https://github.com/zero-mo/Br...

Zusätzlich gibt es für die Bildkomprimierung hier einen Vorgang, der auf canvas basiert. Sie können ihn ausprobieren.
http://www.cnblogs.com/xiao-y...

Das Folgende ist ein Zitat aus meiner vorherigen Antwort

Wenn die Kompatibilität mit IE nicht berücksichtigt wird, können Sie FileReader API verwenden, um die Datei zu lesen, um den Base64-Wert der Datei zu erhalten, der direkt zum Anzeigen des Bildes und verwenden Sie dann einige Plug-Ins, um das Bild zuzuschneiden. Laden Sie es dann auf den Server hoch und speichern Sie es
imgBase64 https://developer.mozilla.org...

http://www.jq22.com/jquery-in...

FileReader API 参考文档:
Was die Komprimierung betrifft, ist die Größe des zugeschnittenen Bildes natürlich viel kleiner als das OriginalbildjQuery 剪裁图片插件(支持移动端):

Ursprüngliche Frageadresse: https://segmentfault.com/q/10...

Der Artikel, den ich gerade geschrieben habe:

https://segmentfault.com/a/11...

Verwenden Sie hauptsächlich die Auswahl der nativen HTML5-Dateiform, verwenden Sie dann das Plug-In zum Komprimieren und verwenden Sie es schließlich die vom Plug-in ausgegebenen FormData direkt hochladen.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

CakePHP Datum und Uhrzeit

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

CakePHP-Projektkonfiguration

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

CakePHP-Datei hochladen

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

CakePHP-Routing

HTML-Tabellenlayout HTML-Tabellenlayout Sep 04, 2024 pm 04:54 PM

HTML-Tabellenlayout

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

Besprechen Sie CakePHP

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP-Kurzanleitung

See all articles