diff --git a/apps/tests/ui/image/image-tests.ts b/apps/tests/ui/image/image-tests.ts
index dbd587d4c..e9fa9d410 100644
--- a/apps/tests/ui/image/image-tests.ts
+++ b/apps/tests/ui/image/image-tests.ts
@@ -131,6 +131,31 @@ export var test_SettingImageSrcToFileWithinApp = function (done) {
helper.buildUIAndRunTest(image, testFunc);
}
+export var test_SettingImageSrcToDataURI = function (done) {
+ //
+ // ### How to create an image and set its src to Data URI.
+ // ``` JavaScript
+ var image = new ImageModule.Image();
+ image.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAAAXNSR0IArs4c6QAAABxpRE9UAAAAAgAAAAAAAAACAAAAKAAAAAIAAAACAAAARiS4uJEAAAASSURBVBgZYvjPwABHSMz/DAAAAAD//0GWpK0AAAAOSURBVGNgYPiPhBgQAACEvQv1D5y/pAAAAABJRU5ErkJggg==";
+ // ```
+ //
+
+ var testFunc = function (views: Array) {
+ var testImage = views[0];
+ TKUnit.waitUntilReady(() => !testImage.isLoading, 3);
+ try {
+ TKUnit.assertTrue(!testImage.isLoading, "isLoading should be false.");
+ TKUnit.assertNotNull(testImage.imageSource);
+ done(null);
+ }
+ catch (e) {
+ done(e);
+ }
+ }
+
+ helper.buildUIAndRunTest(image, testFunc);
+}
+
export var test_SettingStretch_AspectFit = function () {
//
// ### How to set image stretching.
diff --git a/ui/image/image-common.ts b/ui/image/image-common.ts
index 6acc3e466..28affba7c 100644
--- a/ui/image/image-common.ts
+++ b/ui/image/image-common.ts
@@ -5,6 +5,8 @@ import imageSource = require("image-source");
import definition = require("ui/image");
import enums = require("ui/enums");
import platform = require("platform");
+import utils = require("utils/utils");
+
import * as typesModule from "utils/types";
var SRC = "src";
@@ -30,7 +32,14 @@ function onSrcPropertyChanged(data: dependencyObservable.PropertyChangeData) {
image._setValue(Image.isLoadingProperty, true);
- if (imageSource.isFileOrResourcePath(value)) {
+ if (utils.isDataURI(value)) {
+ var base64Data = value.split(",")[1];
+ if (types.isDefined(base64Data)) {
+ image.imageSource = imageSource.fromBase64(base64Data);
+ image._setValue(Image.isLoadingProperty, false);
+ }
+ }
+ else if (imageSource.isFileOrResourcePath(value)) {
image.imageSource = imageSource.fromFileOrResource(value);
image._setValue(Image.isLoadingProperty, false);
} else {