Bei der Verarbeitung von Bild-Uploads besteht die übliche Logik im Allgemeinen darin, das Quellbild auf den Server hochzuladen und dann die serverseitige Sprache zum Durchführen des Skalierungsvorgangs zu verwenden.
Dieser Modus kann im Allgemeinen die meisten Anforderungen erfüllen. Wenn das von uns benötigte Bild jedoch nur eine Miniaturansicht des Quellbilds ist, das der angegebenen Größe entspricht, ist die Verwendung dieses Modus eine Verschwendung von Serverressourcen und Bandbreite. Daher überlegen wir, vor dem Hochladen ein kleines Bild auf der Browserseite zu erstellen.
//Das Folgende ist der Quellcode
function drawCanvasImage(obj,width, callback){
var $canvas = $(''),
canvas = $canvas[0 ],
context = canvas.getContext('2d');
var img = new Image();
img.onload = function(){
if(width ){
if (width > img.width){
var target_w = img.width;
var target_h = img.height; 🎜>var target_h = parseInt (target_w/img.width*img.height);
}else{
var target_w = img.width;
var target_h = img.height; >}
$canvas[0].width = target_w;
$canvas[0].height = target_h;
context.drawImage(img,0,0,target_w,target_h); 🎜>
_canvas = canvas.toDataURL();
/*console.log(_canvas);*/
callback(obj,_canvas);
img.src = getFullPath( obj);
}
function getFullPath(obj)
{
if(obj)
{
//ie
if (window.navigator .userAgent.indexOf(" MSIE")>=1)
{
obj.select();
return document.selection.createRange().text; firefox
else if (window.navigator.userAgent.indexOf("Firefox")>=1 || $.browser.opera || $.browser.mozilla)
{
if(obj.files && window.URL.createObjectURL )
{
return window.URL.createObjectURL(obj.files[0]);
return obj.value
}else if($. browser.safari){
if(window.webkitURL.createObjectURL && obj.files){
return window.webkitURL.createObjectURL(obj.files[0]);
}
return obj.value ;
}
return obj.value;
}
Die Funktion getFullPath dient dazu, die Adresse des ausgewählten Bildes abzurufen.
_canvas erhält die Base64-kodierte Bildkodierung, die an das Backend übertragen und in eine Datei geschrieben werden kann.
Stellungnahme: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