scriptbox
Version:
Script box is a full VAS application
275 lines • 21.4 kB
JavaScript
!function (a) {
"use strict";
var b = function (a, c, d) {
var e, f, g = document.createElement("img");
if (g.onerror = c, g.onload = function () {
!f || d && d.noRevoke || b.revokeObjectURL(f), c && c(b.scale(g, d))
}, b.isInstanceOf("Blob", a) || b.isInstanceOf("File", a))e = f = b.createObjectURL(a), g._type = a.type; else {
if ("string" != typeof a)return!1;
e = a, d && d.crossOrigin && (g.crossOrigin = d.crossOrigin)
}
return e ? (g.src = e, g) : b.readFile(a, function (a) {
var b = a.target;
b && b.result ? g.src = b.result : c && c(a)
})
}, c = window.createObjectURL && window || window.URL && URL.revokeObjectURL && URL || window.webkitURL && webkitURL;
b.isInstanceOf = function (a, b) {
return Object.prototype.toString.call(b) === "[object " + a + "]"
}, b.transformCoordinates = function () {
}, b.getTransformedOptions = function (a) {
return a
}, b.renderImageToCanvas = function (a, b, c, d, e, f, g, h, i, j) {
return a.getContext("2d").drawImage(b, c, d, e, f, g, h, i, j), a
}, b.hasCanvasOption = function (a) {
return a.canvas || a.crop
}, b.scale = function (a, c) {
c = c || {};
var d, e, f, g, h, i, j, k, l, m = document.createElement("canvas"), n = a.getContext || b.hasCanvasOption(c) && m.getContext, o = a.naturalWidth || a.width, p = a.naturalHeight || a.height, q = o, r = p, s = function () {
var a = Math.max((f || q) / q, (g || r) / r);
a > 1 && (q = Math.ceil(q * a), r = Math.ceil(r * a))
}, t = function () {
var a = Math.min((d || q) / q, (e || r) / r);
1 > a && (q = Math.ceil(q * a), r = Math.ceil(r * a))
};
return n && (c = b.getTransformedOptions(c), j = c.left || 0, k = c.top || 0, c.sourceWidth ? (h = c.sourceWidth, void 0 !== c.right && void 0 === c.left && (j = o - h - c.right)) : h = o - j - (c.right || 0), c.sourceHeight ? (i = c.sourceHeight, void 0 !== c.bottom && void 0 === c.top && (k = p - i - c.bottom)) : i = p - k - (c.bottom || 0), q = h, r = i), d = c.maxWidth, e = c.maxHeight, f = c.minWidth, g = c.minHeight, n && d && e && c.crop ? (q = d, r = e, l = h / i - d / e, 0 > l ? (i = e * h / d, void 0 === c.top && void 0 === c.bottom && (k = (p - i) / 2)) : l > 0 && (h = d * i / e, void 0 === c.left && void 0 === c.right && (j = (o - h) / 2))) : ((c.contain || c.cover) && (f = d = d || f, g = e = e || g), c.cover ? (t(), s()) : (s(), t())), n ? (m.width = q, m.height = r, b.transformCoordinates(m, c), b.renderImageToCanvas(m, a, j, k, h, i, 0, 0, q, r)) : (a.width = q, a.height = r, a)
}, b.createObjectURL = function (a) {
return c ? c.createObjectURL(a) : !1
}, b.revokeObjectURL = function (a) {
return c ? c.revokeObjectURL(a) : !1
}, b.readFile = function (a, b, c) {
if (window.FileReader) {
var d = new FileReader;
if (d.onload = d.onerror = b, c = c || "readAsDataURL", d[c])return d[c](a), d
}
return!1
}, "function" == typeof define && define.amd ? define(function () {
return b
}) : a.loadImage = b
}(this), function (a) {
"use strict";
"function" == typeof define && define.amd ? define(["load-image"], a) : a(window.loadImage)
}(function (a) {
"use strict";
if (window.navigator && window.navigator.platform && /iP(hone|od|ad)/.test(window.navigator.platform)) {
var b = a.renderImageToCanvas;
a.detectSubsampling = function (a) {
var b, c;
return a.width * a.height > 1048576 ? (b = document.createElement("canvas"), b.width = b.height = 1, c = b.getContext("2d"), c.drawImage(a, -a.width + 1, 0), 0 === c.getImageData(0, 0, 1, 1).data[3]) : !1
}, a.detectVerticalSquash = function (a, b) {
var c, d, e, f, g, h = a.naturalHeight || a.height, i = document.createElement("canvas"), j = i.getContext("2d");
for (b && (h /= 2), i.width = 1, i.height = h, j.drawImage(a, 0, 0), c = j.getImageData(0, 0, 1, h).data, d = 0, e = h, f = h; f > d;)g = c[4 * (f - 1) + 3], 0 === g ? e = f : d = f, f = e + d >> 1;
return f / h || 1
}, a.renderImageToCanvas = function (c, d, e, f, g, h, i, j, k, l) {
if ("image/jpeg" === d._type) {
var m, n, o, p, q = c.getContext("2d"), r = document.createElement("canvas"), s = 1024, t = r.getContext("2d");
if (r.width = s, r.height = s, q.save(), m = a.detectSubsampling(d), m && (e /= 2, f /= 2, g /= 2, h /= 2), n = a.detectVerticalSquash(d, m), m || 1 !== n) {
for (f *= n, k = Math.ceil(s * k / g), l = Math.ceil(s * l / h / n), j = 0, p = 0; h > p;) {
for (i = 0, o = 0; g > o;)t.clearRect(0, 0, s, s), t.drawImage(d, e, f, g, h, -o, -p, g, h), q.drawImage(r, 0, 0, s, s, i, j, k, l), o += s, i += k;
p += s, j += l
}
return q.restore(), c
}
}
return b(c, d, e, f, g, h, i, j, k, l)
}
}
}), function (a) {
"use strict";
"function" == typeof define && define.amd ? define(["load-image"], a) : a(window.loadImage)
}(function (a) {
"use strict";
var b = a.hasCanvasOption;
a.hasCanvasOption = function (a) {
return b(a) || a.orientation
}, a.transformCoordinates = function (a, b) {
var c = a.getContext("2d"), d = a.width, e = a.height, f = b.orientation;
if (f)switch (f > 4 && (a.width = e, a.height = d), f) {
case 2:
c.translate(d, 0), c.scale(-1, 1);
break;
case 3:
c.translate(d, e), c.rotate(Math.PI);
break;
case 4:
c.translate(0, e), c.scale(1, -1);
break;
case 5:
c.rotate(.5 * Math.PI), c.scale(1, -1);
break;
case 6:
c.rotate(.5 * Math.PI), c.translate(0, -e);
break;
case 7:
c.rotate(.5 * Math.PI), c.translate(d, -e), c.scale(-1, 1);
break;
case 8:
c.rotate(-.5 * Math.PI), c.translate(-d, 0)
}
}, a.getTransformedOptions = function (a) {
if (!a.orientation || 1 === a.orientation)return a;
var b, c = {};
for (b in a)a.hasOwnProperty(b) && (c[b] = a[b]);
switch (a.orientation) {
case 2:
c.left = a.right, c.right = a.left;
break;
case 3:
c.left = a.right, c.top = a.bottom, c.right = a.left, c.bottom = a.top;
break;
case 4:
c.top = a.bottom, c.bottom = a.top;
break;
case 5:
c.left = a.top, c.top = a.left, c.right = a.bottom, c.bottom = a.right;
break;
case 6:
c.left = a.top, c.top = a.right, c.right = a.bottom, c.bottom = a.left;
break;
case 7:
c.left = a.bottom, c.top = a.right, c.right = a.top, c.bottom = a.left;
break;
case 8:
c.left = a.bottom, c.top = a.left, c.right = a.top, c.bottom = a.right
}
return a.orientation > 4 && (c.maxWidth = a.maxHeight, c.maxHeight = a.maxWidth, c.minWidth = a.minHeight, c.minHeight = a.minWidth, c.sourceWidth = a.sourceHeight, c.sourceHeight = a.sourceWidth), c
}
}), function (a) {
"use strict";
"function" == typeof define && define.amd ? define(["load-image"], a) : a(window.loadImage)
}(function (a) {
"use strict";
var b = window.Blob && (Blob.prototype.slice || Blob.prototype.webkitSlice || Blob.prototype.mozSlice);
a.blobSlice = b && function () {
var a = this.slice || this.webkitSlice || this.mozSlice;
return a.apply(this, arguments)
}, a.metaDataParsers = {jpeg: {65505: []}}, a.parseMetaData = function (b, c, d) {
d = d || {};
var e = this, f = d.maxMetaDataSize || 262144, g = {}, h = !(window.DataView && b && b.size >= 12 && "image/jpeg" === b.type && a.blobSlice);
(h || !a.readFile(a.blobSlice.call(b, 0, f), function (b) {
var f, h, i, j, k = b.target.result, l = new DataView(k), m = 2, n = l.byteLength - 4, o = m;
if (65496 === l.getUint16(0)) {
for (; n > m && (f = l.getUint16(m), f >= 65504 && 65519 >= f || 65534 === f);) {
if (h = l.getUint16(m + 2) + 2, m + h > l.byteLength) {
console.log("Invalid meta data: Invalid segment size.");
break
}
if (i = a.metaDataParsers.jpeg[f])for (j = 0; j < i.length; j += 1)i[j].call(e, l, m, h, g, d);
m += h, o = m
}
!d.disableImageHead && o > 6 && (g.imageHead = k.slice ? k.slice(0, o) : new Uint8Array(k).subarray(0, o))
} else console.log("Invalid JPEG file: Missing JPEG marker.");
c(g)
}, "readAsArrayBuffer")) && c(g)
}
}), function (a) {
"use strict";
"function" == typeof define && define.amd ? define(["load-image", "load-image-meta"], a) : a(window.loadImage)
}(function (a) {
"use strict";
a.ExifMap = function () {
return this
}, a.ExifMap.prototype.map = {Orientation: 274}, a.ExifMap.prototype.get = function (a) {
return this[a] || this[this.map[a]]
}, a.getExifThumbnail = function (a, b, c) {
var d, e, f;
if (!c || b + c > a.byteLength)return console.log("Invalid Exif data: Invalid thumbnail data."), void 0;
for (d = [], e = 0; c > e; e += 1)f = a.getUint8(b + e), d.push((16 > f ? "0" : "") + f.toString(16));
return"data:image/jpeg,%" + d.join("%")
}, a.exifTagTypes = {1: {getValue: function (a, b) {
return a.getUint8(b)
}, size: 1}, 2: {getValue: function (a, b) {
return String.fromCharCode(a.getUint8(b))
}, size: 1, ascii: !0}, 3: {getValue: function (a, b, c) {
return a.getUint16(b, c)
}, size: 2}, 4: {getValue: function (a, b, c) {
return a.getUint32(b, c)
}, size: 4}, 5: {getValue: function (a, b, c) {
return a.getUint32(b, c) / a.getUint32(b + 4, c)
}, size: 8}, 9: {getValue: function (a, b, c) {
return a.getInt32(b, c)
}, size: 4}, 10: {getValue: function (a, b, c) {
return a.getInt32(b, c) / a.getInt32(b + 4, c)
}, size: 8}}, a.exifTagTypes[7] = a.exifTagTypes[1], a.getExifValue = function (b, c, d, e, f, g) {
var h, i, j, k, l, m, n = a.exifTagTypes[e];
if (!n)return console.log("Invalid Exif data: Invalid tag type."), void 0;
if (h = n.size * f, i = h > 4 ? c + b.getUint32(d + 8, g) : d + 8, i + h > b.byteLength)return console.log("Invalid Exif data: Invalid data offset."), void 0;
if (1 === f)return n.getValue(b, i, g);
for (j = [], k = 0; f > k; k += 1)j[k] = n.getValue(b, i + k * n.size, g);
if (n.ascii) {
for (l = "", k = 0; k < j.length && (m = j[k], "\x00" !== m); k += 1)l += m;
return l
}
return j
}, a.parseExifTag = function (b, c, d, e, f) {
var g = b.getUint16(d, e);
f.exif[g] = a.getExifValue(b, c, d, b.getUint16(d + 2, e), b.getUint32(d + 4, e), e)
}, a.parseExifTags = function (a, b, c, d, e) {
var f, g, h;
if (c + 6 > a.byteLength)return console.log("Invalid Exif data: Invalid directory offset."), void 0;
if (f = a.getUint16(c, d), g = c + 2 + 12 * f, g + 4 > a.byteLength)return console.log("Invalid Exif data: Invalid directory size."), void 0;
for (h = 0; f > h; h += 1)this.parseExifTag(a, b, c + 2 + 12 * h, d, e);
return a.getUint32(g, d)
}, a.parseExifData = function (b, c, d, e, f) {
if (!f.disableExif) {
var g, h, i, j = c + 10;
if (1165519206 === b.getUint32(c + 4)) {
if (j + 8 > b.byteLength)return console.log("Invalid Exif data: Invalid segment size."), void 0;
if (0 !== b.getUint16(c + 8))return console.log("Invalid Exif data: Missing byte alignment offset."), void 0;
switch (b.getUint16(j)) {
case 18761:
g = !0;
break;
case 19789:
g = !1;
break;
default:
return console.log("Invalid Exif data: Invalid byte alignment marker."), void 0
}
if (42 !== b.getUint16(j + 2, g))return console.log("Invalid Exif data: Missing TIFF marker."), void 0;
h = b.getUint32(j + 4, g), e.exif = new a.ExifMap, h = a.parseExifTags(b, j, j + h, g, e), h && !f.disableExifThumbnail && (i = {exif: {}}, h = a.parseExifTags(b, j, j + h, g, i), i.exif[513] && (e.exif.Thumbnail = a.getExifThumbnail(b, j + i.exif[513], i.exif[514]))), e.exif[34665] && !f.disableExifSub && a.parseExifTags(b, j, j + e.exif[34665], g, e), e.exif[34853] && !f.disableExifGps && a.parseExifTags(b, j, j + e.exif[34853], g, e)
}
}
}, a.metaDataParsers.jpeg[65505].push(a.parseExifData)
}), function (a) {
"use strict";
"function" == typeof define && define.amd ? define(["load-image", "load-image-exif"], a) : a(window.loadImage)
}(function (a) {
"use strict";
a.ExifMap.prototype.tags = {256: "ImageWidth", 257: "ImageHeight", 34665: "ExifIFDPointer", 34853: "GPSInfoIFDPointer", 40965: "InteroperabilityIFDPointer", 258: "BitsPerSample", 259: "Compression", 262: "PhotometricInterpretation", 274: "Orientation", 277: "SamplesPerPixel", 284: "PlanarConfiguration", 530: "YCbCrSubSampling", 531: "YCbCrPositioning", 282: "XResolution", 283: "YResolution", 296: "ResolutionUnit", 273: "StripOffsets", 278: "RowsPerStrip", 279: "StripByteCounts", 513: "JPEGInterchangeFormat", 514: "JPEGInterchangeFormatLength", 301: "TransferFunction", 318: "WhitePoint", 319: "PrimaryChromaticities", 529: "YCbCrCoefficients", 532: "ReferenceBlackWhite", 306: "DateTime", 270: "ImageDescription", 271: "Make", 272: "Model", 305: "Software", 315: "Artist", 33432: "Copyright", 36864: "ExifVersion", 40960: "FlashpixVersion", 40961: "ColorSpace", 40962: "PixelXDimension", 40963: "PixelYDimension", 42240: "Gamma", 37121: "ComponentsConfiguration", 37122: "CompressedBitsPerPixel", 37500: "MakerNote", 37510: "UserComment", 40964: "RelatedSoundFile", 36867: "DateTimeOriginal", 36868: "DateTimeDigitized", 37520: "SubSecTime", 37521: "SubSecTimeOriginal", 37522: "SubSecTimeDigitized", 33434: "ExposureTime", 33437: "FNumber", 34850: "ExposureProgram", 34852: "SpectralSensitivity", 34855: "PhotographicSensitivity", 34856: "OECF", 34864: "SensitivityType", 34865: "StandardOutputSensitivity", 34866: "RecommendedExposureIndex", 34867: "ISOSpeed", 34868: "ISOSpeedLatitudeyyy", 34869: "ISOSpeedLatitudezzz", 37377: "ShutterSpeedValue", 37378: "ApertureValue", 37379: "BrightnessValue", 37380: "ExposureBias", 37381: "MaxApertureValue", 37382: "SubjectDistance", 37383: "MeteringMode", 37384: "LightSource", 37385: "Flash", 37396: "SubjectArea", 37386: "FocalLength", 41483: "FlashEnergy", 41484: "SpatialFrequencyResponse", 41486: "FocalPlaneXResolution", 41487: "FocalPlaneYResolution", 41488: "FocalPlaneResolutionUnit", 41492: "SubjectLocation", 41493: "ExposureIndex", 41495: "SensingMethod", 41728: "FileSource", 41729: "SceneType", 41730: "CFAPattern", 41985: "CustomRendered", 41986: "ExposureMode", 41987: "WhiteBalance", 41988: "DigitalZoomRatio", 41989: "FocalLengthIn35mmFilm", 41990: "SceneCaptureType", 41991: "GainControl", 41992: "Contrast", 41993: "Saturation", 41994: "Sharpness", 41995: "DeviceSettingDescription", 41996: "SubjectDistanceRange", 42016: "ImageUniqueID", 42032: "CameraOwnerName", 42033: "BodySerialNumber", 42034: "LensSpecification", 42035: "LensMake", 42036: "LensModel", 42037: "LensSerialNumber", 0: "GPSVersionID", 1: "GPSLatitudeRef", 2: "GPSLatitude", 3: "GPSLongitudeRef", 4: "GPSLongitude", 5: "GPSAltitudeRef", 6: "GPSAltitude", 7: "GPSTimeStamp", 8: "GPSSatellites", 9: "GPSStatus", 10: "GPSMeasureMode", 11: "GPSDOP", 12: "GPSSpeedRef", 13: "GPSSpeed", 14: "GPSTrackRef", 15: "GPSTrack", 16: "GPSImgDirectionRef", 17: "GPSImgDirection", 18: "GPSMapDatum", 19: "GPSDestLatitudeRef", 20: "GPSDestLatitude", 21: "GPSDestLongitudeRef", 22: "GPSDestLongitude", 23: "GPSDestBearingRef", 24: "GPSDestBearing", 25: "GPSDestDistanceRef", 26: "GPSDestDistance", 27: "GPSProcessingMethod", 28: "GPSAreaInformation", 29: "GPSDateStamp", 30: "GPSDifferential", 31: "GPSHPositioningError"}, a.ExifMap.prototype.stringValues = {ExposureProgram: {0: "Undefined", 1: "Manual", 2: "Normal program", 3: "Aperture priority", 4: "Shutter priority", 5: "Creative program", 6: "Action program", 7: "Portrait mode", 8: "Landscape mode"}, MeteringMode: {0: "Unknown", 1: "Average", 2: "CenterWeightedAverage", 3: "Spot", 4: "MultiSpot", 5: "Pattern", 6: "Partial", 255: "Other"}, LightSource: {0: "Unknown", 1: "Daylight", 2: "Fluorescent", 3: "Tungsten (incandescent light)", 4: "Flash", 9: "Fine weather", 10: "Cloudy weather", 11: "Shade", 12: "Daylight fluorescent (D 5700 - 7100K)", 13: "Day white fluorescent (N 4600 - 5400K)", 14: "Cool white fluorescent (W 3900 - 4500K)", 15: "White fluorescent (WW 3200 - 3700K)", 17: "Standard light A", 18: "Standard light B", 19: "Standard light C", 20: "D55", 21: "D65", 22: "D75", 23: "D50", 24: "ISO studio tungsten", 255: "Other"}, Flash: {0: "Flash did not fire", 1: "Flash fired", 5: "Strobe return light not detected", 7: "Strobe return light detected", 9: "Flash fired, compulsory flash mode", 13: "Flash fired, compulsory flash mode, return light not detected", 15: "Flash fired, compulsory flash mode, return light detected", 16: "Flash did not fire, compulsory flash mode", 24: "Flash did not fire, auto mode", 25: "Flash fired, auto mode", 29: "Flash fired, auto mode, return light not detected", 31: "Flash fired, auto mode, return light detected", 32: "No flash function", 65: "Flash fired, red-eye reduction mode", 69: "Flash fired, red-eye reduction mode, return light not detected", 71: "Flash fired, red-eye reduction mode, return light detected", 73: "Flash fired, compulsory flash mode, red-eye reduction mode", 77: "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected", 79: "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected", 89: "Flash fired, auto mode, red-eye reduction mode", 93: "Flash fired, auto mode, return light not detected, red-eye reduction mode", 95: "Flash fired, auto mode, return light detected, red-eye reduction mode"}, SensingMethod: {1: "Undefined", 2: "One-chip color area sensor", 3: "Two-chip color area sensor", 4: "Three-chip color area sensor", 5: "Color sequential area sensor", 7: "Trilinear sensor", 8: "Color sequential linear sensor"}, SceneCaptureType: {0: "Standard", 1: "Landscape", 2: "Portrait", 3: "Night scene"}, SceneType: {1: "Directly photographed"}, CustomRendered: {0: "Normal process", 1: "Custom process"}, WhiteBalance: {0: "Auto white balance", 1: "Manual white balance"}, GainControl: {0: "None", 1: "Low gain up", 2: "High gain up", 3: "Low gain down", 4: "High gain down"}, Contrast: {0: "Normal", 1: "Soft", 2: "Hard"}, Saturation: {0: "Normal", 1: "Low saturation", 2: "High saturation"}, Sharpness: {0: "Normal", 1: "Soft", 2: "Hard"}, SubjectDistanceRange: {0: "Unknown", 1: "Macro", 2: "Close view", 3: "Distant view"}, FileSource: {3: "DSC"}, ComponentsConfiguration: {0: "", 1: "Y", 2: "Cb", 3: "Cr", 4: "R", 5: "G", 6: "B"}, Orientation: {1: "top-left", 2: "top-right", 3: "bottom-right", 4: "bottom-left", 5: "left-top", 6: "right-top", 7: "right-bottom", 8: "left-bottom"}}, a.ExifMap.prototype.getText = function (a) {
var b = this.get(a);
switch (a) {
case"LightSource":
case"Flash":
case"MeteringMode":
case"ExposureProgram":
case"SensingMethod":
case"SceneCaptureType":
case"SceneType":
case"CustomRendered":
case"WhiteBalance":
case"GainControl":
case"Contrast":
case"Saturation":
case"Sharpness":
case"SubjectDistanceRange":
case"FileSource":
case"Orientation":
return this.stringValues[a][b];
case"ExifVersion":
case"FlashpixVersion":
return String.fromCharCode(b[0], b[1], b[2], b[3]);
case"ComponentsConfiguration":
return this.stringValues[a][b[0]] + this.stringValues[a][b[1]] + this.stringValues[a][b[2]] + this.stringValues[a][b[3]];
case"GPSVersionID":
return b[0] + "." + b[1] + "." + b[2] + "." + b[3]
}
return String(b)
}, function (a) {
var b, c = a.tags, d = a.map;
for (b in c)c.hasOwnProperty(b) && (d[c[b]] = b)
}(a.ExifMap.prototype), a.ExifMap.prototype.getAll = function () {
var a, b, c = {};
for (a in this)this.hasOwnProperty(a) && (b = this.tags[a], b && (c[b] = this.getText(b)));
return c
}
});