UNPKG

tns-core-modules

Version:

Telerik NativeScript Core Modules

121 lines (120 loc) 4.14 kB
var types = require("utils/types"); var common = require("./image-source-common"); global.moduleMerge(common, exports); var utils; function ensureUtils() { if (!utils) { utils = require("utils/utils"); } } var fs; function ensureFS() { if (!fs) { fs = require("file-system"); } } var enums; function ensureEnums() { if (!enums) { enums = require("ui/enums"); } } var ImageSource = (function () { function ImageSource() { } ImageSource.prototype.loadFromResource = function (name) { this.android = null; ensureUtils(); var res = utils.ad.getApplicationContext().getResources(); if (res) { var identifier = res.getIdentifier(name, 'drawable', utils.ad.getApplication().getPackageName()); if (0 < identifier) { var bitmapDrawable = res.getDrawable(identifier); if (bitmapDrawable && bitmapDrawable.getBitmap) { this.android = bitmapDrawable.getBitmap(); } } } return this.android != null; }; ImageSource.prototype.loadFromFile = function (path) { ensureFS(); var fileName = types.isString(path) ? path.trim() : ""; if (fileName.indexOf("~/") === 0) { fileName = fs.path.join(fs.knownFolders.currentApp().path, fileName.replace("~/", "")); } this.android = android.graphics.BitmapFactory.decodeFile(fileName, null); return this.android != null; }; ImageSource.prototype.loadFromData = function (data) { this.android = android.graphics.BitmapFactory.decodeStream(data); return this.android != null; }; ImageSource.prototype.loadFromBase64 = function (source) { if (types.isString(source)) { var bytes = android.util.Base64.decode(source, android.util.Base64.DEFAULT); this.android = android.graphics.BitmapFactory.decodeByteArray(bytes, 0, bytes.length); } return this.android != null; }; ImageSource.prototype.setNativeSource = function (source) { this.android = source; return source != null; }; ImageSource.prototype.saveToFile = function (path, format, quality) { if (quality === void 0) { quality = 100; } if (!this.android) { return false; } var targetFormat = getTargetFromat(format); var outputStream = new java.io.BufferedOutputStream(new java.io.FileOutputStream(path)); var res = this.android.compress(targetFormat, quality, outputStream); outputStream.close(); return res; }; ImageSource.prototype.toBase64String = function (format, quality) { if (quality === void 0) { quality = 100; } if (!this.android) { return null; ; } var targetFormat = getTargetFromat(format); var outputStream = new java.io.ByteArrayOutputStream(); var base64Stream = new android.util.Base64OutputStream(outputStream, android.util.Base64.NO_WRAP); this.android.compress(targetFormat, quality, base64Stream); base64Stream.close(); outputStream.close(); return outputStream.toString(); }; Object.defineProperty(ImageSource.prototype, "height", { get: function () { if (this.android) { return this.android.getHeight(); } return NaN; }, enumerable: true, configurable: true }); Object.defineProperty(ImageSource.prototype, "width", { get: function () { if (this.android) { return this.android.getWidth(); } return NaN; }, enumerable: true, configurable: true }); return ImageSource; }()); exports.ImageSource = ImageSource; function getTargetFromat(format) { ensureEnums(); switch (format) { case enums.ImageFormat.jpeg: return android.graphics.Bitmap.CompressFormat.JPEG; default: return android.graphics.Bitmap.CompressFormat.PNG; } }