diff --git a/android/src/main/java/com/horcrux/svg/ImageShadowNode.java b/android/src/main/java/com/horcrux/svg/ImageShadowNode.java index cf841579..996ee0a3 100644 --- a/android/src/main/java/com/horcrux/svg/ImageShadowNode.java +++ b/android/src/main/java/com/horcrux/svg/ImageShadowNode.java @@ -87,7 +87,12 @@ public class ImageShadowNode extends PathShadowNode { return; } - mImageRatio = (float)src.getInt("width") / (float)src.getInt("height"); + if (src.hasKey("width") && src.hasKey("height")) { + mImageRatio = (float)src.getInt("width") / (float)src.getInt("height"); + } + else { + mImageRatio = (float)0.0; + } mUri = Uri.parse(uriString); } } @@ -170,7 +175,7 @@ public class ImageShadowNode extends PathShadowNode { float rectRatio = rectWidth / rectHeight; RectF renderRect; - if (mImageRatio == rectRatio) { + if (mImageRatio == 0.0 || mImageRatio == rectRatio) { renderRect = new RectF(rect); } else if (mImageRatio < rectRatio) { renderRect = new RectF(0, 0, (int)(rectHeight * mImageRatio), (int)rectHeight); diff --git a/elements/Image.js b/elements/Image.js index f5fa6e0e..e53eced5 100644 --- a/elements/Image.js +++ b/elements/Image.js @@ -16,7 +16,12 @@ class Image extends Shape { y: numberProp, width: numberProp.isRequired, height: numberProp.isRequired, - href: PropTypes.number.isRequired, + href: PropTypes.oneOfType([ + PropTypes.number, + PropTypes.shape({ + uri: PropTypes.string.isRequired + }) + ]).isRequired, preserveAspectRatio: PropTypes.string };