Вход Регистрация
Файл: CloudBox-main/CloudBox/admin_assets/js/jquery-image-upload.js
Строк: 362
<?php
$(document).ready(function () {

    
/*****************************
     Variables
     *****************************/
    
var imgWidth 180,
        
imgHeight 180,
        
zindex 0;
    
dropzone = $('#droparea'),
        
uploadBtn = $('#uploadbtn'),
        
defaultUploadBtn = $('#upload');


    
/*****************************
     Events Handler
     *****************************/
    
dropzone.on('dragover', function () {
        
//add hover class when drag over
        
dropzone.addClass('hover');
        return 
false;
    });
    
dropzone.on('dragleave', function () {
        
//remove hover class when drag out
        
dropzone.removeClass('hover');
        return 
false;
    });
    
dropzone.on('drop', function (e) {
        
//prevent browser from open the file when drop off
        
e.stopPropagation();
        
e.preventDefault();
        
dropzone.removeClass('hover');

        
//retrieve uploaded files data
        
var files e.originalEvent.dataTransfer.files;
        
processFiles(files);

        return 
false;
    });

    
uploadBtn.on('click', function (e) {
        
e.stopPropagation();
        
e.preventDefault();
        
//trigger default file upload button
        
defaultUploadBtn.click();
    });
    
defaultUploadBtn.on('change', function () {
        
//retrieve selected uploaded files data
        
var files = $(this)[0].files;
        
processFiles(files);

        return 
false;
    });


    
/*****************************
     internal functions
     *****************************/
        //Bytes to KiloBytes conversion
    
function convertToKBytes(number) {
        return (
number 1024).toFixed(1);
    }

    function 
compareWidthHeight(widthheight) {
        var 
diff = [];
        if (
width height) {
            
diff[0] = width height;
            
diff[1] = 0;
        } else {
            
diff[0] = 0;
            
diff[1] = height width;
        }
        return 
diff;
    }

    
/*********
     BlobBuilder is deprecated
     **********/
    /*
     //convert datauri to blob
     function dataURItoBlob(dataURI) {
     var BlobBuilder = window.WebKitBlobBuilder || window.MozBlobBuilder || window.BlobBuilder;

     //skip if browser doesn't support BlobBuilder object
     if(typeof BlobBuilder === "undefined") {
     $('#err').html('Ops! There have some limited with your browser! <br/>New image produced from canvas can't be upload to the server...');
     return dataURI;
     }

     // convert base64 to raw binary data held in a string
     // doesn't handle URLEncoded DataURIs
     var byteString;
     if (dataURI.split(',')[0].indexOf('base64') >= 0)
     byteString = atob(dataURI.split(',')[1]);
     else
     byteString = unescape(dataURI.split(',')[1]);

     // separate out the mime component
     var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]

     // write the bytes of the string to an ArrayBuffer
     var ab = new ArrayBuffer(byteString.length);
     var ia = new Uint8Array(ab);
     for (var i = 0; i < byteString.length; i++) {
     ia[i] = byteString.charCodeAt(i);
     }

     // write the ArrayBuffer to a blob, and you're done
     var bb = new BlobBuilder();
     bb.append(ab);
     return bb.getBlob(mimeString);
     }
     */
    
function dataURItoBlob(dataURI) {

        
// convert base64 to raw binary data held in a string
        // doesn't handle URLEncoded DataURIs
        
var byteString;
        if (
dataURI.split(',')[0].indexOf('base64') >= 0)
            
byteString atob(dataURI.split(',')[1]);
        else
            
byteString unescape(dataURI.split(',')[1]);

        
// separate out the mime component
        
var mimeString dataURI.split(',')[0].split(':')[1].split(';')[0]

        
// write the bytes of the string to an ArrayBuffer
        
var ab = new ArrayBuffer(byteString.length);
        var 
ia = new Uint8Array(ab);
        for (var 
0byteString.lengthi++) {
            
ia[i] = byteString.charCodeAt(i);
        }

        
//Passing an ArrayBuffer to the Blob constructor appears to be deprecated,
        //so convert ArrayBuffer to DataView
        
var dataView = new DataView(ab);
        var 
blob = new Blob([dataView], {typemimeString});

        return 
blob;
    }

    
/*****************************
     canvas filter function
     *****************************/
    //Black & White image effect
    //by Marco Lisci - http://badsharkco.com/
    
var grayscale = function (context) {
        var 
imgd context.getImageData(00imgWidthimgHeight);
        var 
pix imgd.data;
        for (var 
0pix.lengthn+= 4) {
            var 
grayscale pix[i  ] * .3 pix[1] * .59 pix[2] * .11;
            
pix[i  ] = grayscale;
            
pix[1] = grayscale;
            
pix[2] = grayscale;
        }
        
context.putImageData(imgd00);
    }

    
//canvas-blur effect
    //by Matt Riggott - http://www.flother.com/
    
var blurry = function (contextimagediff) {
        var 
ixy,
            
blureffect 4;

        
context.globalAlpha 0.1;
        for (
1<= blureffecti++) {
            for (
= -blureffect 2<= blureffect 2y++) {
                for (
= -blureffect 2<= blureffect 2x++) {
                    
context.drawImage(imagediff[0] / 2diff[1] / 2image.width diff[0], image.height diff[1], xyimgWidthimgHeight);
                }
            }
        }
        
context.globalAlpha 1.0;
    }

    
//sepia image effect
    //by http://www.script-tutorials.com/html5-image-effects-sepia/
    
var sepia = function (context) {
        
// set of sepia colors
        
var = [00011233344455566777788899991010101011111212121213131314141515161617171718191920212222232425262728293031323334353637394041424445474849525455575960626567697072747779818386889092949799101103107109111112116118120124126127129133135136140142143145149150152155157159162163165167170171173176177178180183184185188189190192194195196198200201202203204206207208209211212213214215216218219219220221222223224225226227227228229229230231232232233234234235236236237238238239239240241241242242243244244245245245246247247248248249249249250251251252252252253254254254255255255255255255255255255255255255255255255255255255255255255255255255255255255255255],
            
= [00122355678810111112131515161718181921222223242626272829313132333435353738394041434444454647485051525354565758596061636465666768697172737475767779808183848586888990929394959697100101102103105106107108109111113114115117118119120122123124126127128129131132133135136137138140141142144145146148149150151153154155157158159160162163164166167168169171172173174175176177178179181182183184186186187188189190192193194195195196197199200201202202203204205206207208208209210211212213214214215216217218219219220221222223223224225226226227228228229230231232232232233234235235236236237238238239239240240241242242242243244245245246246247247248249249249250251251252252252253254255],
            
= [535353545454555555565757575858585959596061616162626363636465656566666767676869696970707171727373737474757576777778787979808181828283838485858686878788898990909191939394949595969798989999100101102102103104105105106106107108109109110111111112113114114115116117117118119119121121122122123124125126126127128129129130131132132133134134135136137137138139140140141142142143144145145146146148148149149150151152152153153154155156156157157158159160160161161162162163164164165165166166167168168169169170170171172172173173174174175176176177177177178178179180180181181181182182183184184184185185186186186187188188188189189189190190191191192192193193193194194194195196196196197197197198199];

        
// noise value
        
var noise 20;

        var 
imgd context.getImageData(00imgWidthimgHeight);
        var 
pix imgd.data;
        for (var 
0pix.length+= 4) {
            
// change image colors
            
pix[i] = r[pix[i]];
            
pix[1] = g[pix[1]];
            
pix[2] = b[pix[2]];

            
// apply noise
            
if (noise 0) {
                var 
noise Math.round(noise Math.random() * noise);

                for (var 
03j++) {
                    var 
iPN noise pix[j];
                    
pix[j] = (iPN 255) ? 255 iPN;
                }
            }
        }

        
// put image data back to context
        
context.putImageData(imgd00);
    }


    
/*****************************
     Process FileList
     *****************************/
    
var processFiles = function (files) {
        if (
files && typeof FileReader !== "undefined") {
            
//process each files only if browser is supported
            
for (var 0files.lengthi++) {
                
readFile(files[i]);
            }
        } else {

        }
    }


    
/*****************************
     Read the File Object
     *****************************/
    
var readFile = function (file) {
        if ((/
image/i).test(file.type)) {
            
//define FileReader object
            
var reader = new FileReader();

            
//init reader onload event handlers
            
reader.onload = function (e) {
                var 
image = $('<img/>')
                    .
load(function () {
                        
//when image fully loaded
                        
var newimageurl getCanvasImage(this);
                        
createPreview(filenewimageurl);
                        
uploadToServer(filedataURItoBlob(newimageurl));
                    })
                    .
attr('src'e.target.result);
            };

            
//begin reader read operation
            
reader.readAsDataURL(file);

            $(
'#err').text('');
        } else {
            
//some message for wrong file format
            
$('#err').text('*Selected file format not supported!');
        }
    }


    
/*****************************
     Get New Canvas Image URL
     *****************************/
    
var getCanvasImage = function (image) {
        
//get selected effect
        
var effect = $('input[name=effect]:checked').val();
        var 
croping = $('input[name=croping]:checked').val();

        
//define canvas
        
var canvas document.createElement('canvas');
        
canvas.width imgWidth;
        
canvas.height imgHeight;
        var 
ctx canvas.getContext('2d');

        
//default resize variable
        
var diff = [00];
        if (
croping == 'crop') {
            
//get resized width and height
            
diff compareWidthHeight(image.widthimage.height);
        }

        
//draw canvas image
        
ctx.drawImage(imagediff[0] / 2diff[1] / 2image.width diff[0], image.height diff[1], 00imgWidthimgHeight);

        
//apply effects if any
        
if (effect == 'grayscale') {
            
grayscale(ctx);
        } else if (
effect == 'blurry') {
            
blurry(ctximagediff);
        } else if (
effect == 'sepia') {
            
sepia(ctx);
        } else {
        }

        
//convert canvas to jpeg url
        
return canvas.toDataURL("image/jpeg");
    }


    
/*****************************
     Draw Image Preview
     *****************************/
    
var createPreview = function (filenewURL) {
        
//populate jQuery Template binding object
        
var imageObj = {};
        
imageObj.filePath newURL;
        
imageObj.fileName file.name.substr(0file.name.lastIndexOf('.')); //subtract file extension
        
imageObj.fileOriSize convertToKBytes(file.size);
        
imageObj.fileUploadSize convertToKBytes(dataURItoBlob(newURL).size); //convert new image URL to blob to get file.size

        //extend filename
        
var effect = $('input[name=effect]:checked').val();
        if (
effect == 'grayscale') {
            
imageObj.fileName += " (Grayscale)";
        } else if (
effect == 'blurry') {
            
imageObj.fileName += " (Blurry)";
        }

        
//append new image through jQuery Template
        
var randvalue Math.floor(Math.random() * 31) - 15;  //random number
        
var img = $("#imageTemplate").tmpl(imageObj).prependTo("#result")
            .
hide()
            .
css({
                
'Transform''scale(1) rotate(' randvalue 'deg)',
                
'msTransform''scale(1) rotate(' randvalue 'deg)',
                
'MozTransform''scale(1) rotate(' randvalue 'deg)',
                
'webkitTransform''scale(1) rotate(' randvalue 'deg)',
                
'OTransform''scale(1) rotate(' randvalue 'deg)',
                
'z-index'zindex++
            })
            .
show();

        if (
isNaN(imageObj.fileUploadSize)) {
            $(
'.imageholder span').last().hide();
        }
    }


    
/****************************
     Upload Image to Server
     ****************************/
    
var uploadToServer = function (oldFilenewFile) {
        
// prepare FormData
        
var formData = new FormData();
        
//we still have to use back old file
        //since new file doesn't contains original file data
        
formData.append('filename'oldFile.name);
        
formData.append('filetype'oldFile.type);
        
formData.append('file'newFile);

        
//submit formData using $.ajax
        
$.ajax({
            
url'php/upload.php',
            
type'POST',
            
dataformData,
            
processDatafalse,
            
contentTypefalse,
            
success: function (data) {
                
console.log(data);
            }
        });
    }


    
//file upload via original byte sequence
    
var processFileInIE = function (file) {

        var 
imageObj = {};
        var 
extension = ['jpg''jpeg''gif''png'];
        var 
filepath file.value;
        if (
filepath) {
            
//get file name
            
var startIndex = (filepath.indexOf('\') >= 0 ? filepath.lastIndexOf('\') : filepath.lastIndexOf('/'));
            var filedetail = filepath.substring(startIndex);
            if (filedetail.indexOf('
\') === 0 || filedetail.indexOf('/') === 0) {
                filedetail = filedetail.substring(1);
            }
            var filename = filedetail.substr(0, filedetail.lastIndexOf('
.'));
            var fileext = filedetail.slice(filedetail.lastIndexOf(".") + 1).toLowerCase();

            //check file extension
            if ($.inArray(fileext, extension) > -1) {
                //append using template
                $('
#err').text('');
                
imageObj.filepath filepath;
                
imageObj.filename filename;
                var 
randvalue Math.floor(Math.random() * 31) - 15;
                $(
"#imageTemplate").tmpl(imageObj).prependTo("#result")
                    .
hide()
                    .
css({
                        
'Transform''scale(1) rotate(' randvalue 'deg)',
                        
'msTransform''scale(1) rotate(' randvalue 'deg)',
                        
'MozTransform''scale(1) rotate(' randvalue 'deg)',
                        
'webkitTransform''scale(1) rotate(' randvalue 'deg)',
                        
'oTransform''scale(1) rotate(' randvalue 'deg)',
                        
'z-index'zindex++
                    })
                    .
show();
                $(
'#result').find('figcaption span').hide();
            } else {
                $(
'#err').text('*Selected file format not supported!');
            }
        }
    }

    
/****************************
     Browser compatible text
     ****************************/
    
if (typeof FileReader === "undefined") {
        
//$('.extra').hide();
        
$('#err').html('Hey! Your browser does not support <strong>HTML5 File API</strong> <br/>Try using Chrome or Firefox to have it works!');
    } else if (!
Modernizr.draganddrop) {
        $(
'#err').html('Ops! Look like your browser does not support <strong>Drag and Drop API</strong>! <br/>Still, you are able to use '<em>Select Files</em>' button to upload file =)');
    } else {
        $(
'#err').text('');
    }
});
?>
Онлайн: 3
Реклама