Skip to content

Titanium.Blob

A container for binary data.

A Blob represents a chunk of binary information, often obtained through an HTTPClient or by reading a File.

Blobs are often used to store text or image data. The Blob object includes a number of properties and methods specific to image blobs.

Android supports an append method, but otherwise blobs are immutable.

The Titanium.Utils module provides several utility methods for working with blobs, including methods for converting between blobs and Base64-encoded strings, and methods for generating SHA-1 and SHA-256 hashes and MD5 digests from blob data.

The Buffer object can also contain binary data, and is more easily mutable. Extracting blob data to a buffer is somewhat roundabout:

var blobStream = Ti.Stream.createStream({ source: myBlob, mode: Ti.Stream.MODE_READ });
var newBuffer = Ti.createBuffer({ length: myBlob.length });
var bytes = blobStream.read(newBuffer);

Creating a blob from a buffer is much easier:

var newBlob = myBuffer.toBlob();

In both cases, the conversion involves copying the data from one object to another, so you should be conscious of the amount of the data being copied.

Extends: Titanium.Proxy · Since: 0.9, 0.9, 0.9, 9.2.0 · Platforms: android, iphone, ipad, macos

Properties #

apiName#

extended

Type: String

The name of the API that this proxy corresponds to.

The value of this property is the fully qualified name of the API. For example, Button
returns Ti.UI.Button.

bubbleParent#

extended

Type: Boolean

Indicates if the proxy will bubble an event to its parent.

Some proxies (most commonly views) have a relationship to other proxies, often
established by the add() method. For example, for a button added to a window, a
click event on the button would bubble up to the window. Other common parents are
table sections to their rows, table views to their sections, and scrollable views
to their views. Set this property to false to disable the bubbling to the proxy's parent.

file#

Type: Titanium.Filesystem.File

File object represented by this blob, or null if this blob is not
associated with a file.

height#

Type: Number

If this blob represents an image, this is the height of the image in pixels.

If this blob doesn't represent an image, height is reported as 0.

NOTE 1: On SDK versions prior to 9.1.0, Ti.Blob images may have reported in points, not pixels.
This would occur for images with a higher density/scale returned by Titanium.UI.View.toImage or images with @dx density suffixes.
You may multiply by Titanium.Platform.DisplayCaps.logicalDensityFactor to try and determine the pixels, but this value may be off for some pixel/density combinations.
(e.g. a 10px image would report as 3 on a 3x density screen, so multiplying would give you 9 pixels, which is still incorrect)

NOTE 2: This represents the height the platform decodes the image to in memory. iOS will automatically
rotate a JPEG based on its EXIF orientation when loaded into memory, but Android does not and instead
rotates it when shown on-screen. You can read the uprightHeight to determine
what the image height will be after rotation, if applicable.

length#

Type: Number

Length of this blob in bytes.

lifecycleContainer#

extended

Type: Titanium.UI.Window, Titanium.UI.TabGroup

The Window or TabGroup whose Activity lifecycle should be triggered on the proxy.

If this property is set to a Window or TabGroup, then the corresponding Activity lifecycle event callbacks
will also be called on the proxy. Proxies that require the activity lifecycle will need this property set
to the appropriate containing Window or TabGroup.

mimeType#

Type: String

Mime type of the data in this blob.

nativePath#

Type: String

If this blob represents a File, this is the file URL
that represents it.

If this blob doesn't represent a file, the value of nativePath is null.

rotation#

Type: Number

EXIF rotation of the image if available. Can be undefined if no orientation was found.

size#

Type: Number

Size of the blob in pixels (for image blobs) or bytes (for all other blobs).

If this blob represents an image, this is the total number of pixels in the image.
Otherwise it returns the number of bytes in the binary data.

text#

Type: String

UTF-8 string representation of the data in this blob.

If this blob represents pure binary data, the value will be null.

uprightHeight#

Type: Number

If the blob references an image, this provides the height in pixels after factoring in EXIF orientation.

The height of the image in pixels after rotating/flipping it based on its EXIF orientation,
which is commonly the case with JPEGs. Will return the save value as the height
property if image does not have an EXIF orientation or if the orientation is already upright.

On iOS, properties height and uprightHeight will always match.
On Android, these properties may differ when loading a JPEG since this platform does not automatically
rotate the loaded image in memory, but it is rotated when displaying it on-screen.

uprightWidth#

Type: Number

If the blob references an image, this provides the width in pixels after factoring in EXIF orientation.

The width of the image in pixels after rotating/flipping it based on its EXIF orientation,
which is commonly the case with JPEGs. Will return the save value as the width
property if image does not have an EXIF orientation or if the orientation is already upright.

On iOS, properties width and uprightWidth will always match.
On Android, these properties may differ when loading a JPEG since this platform does not automatically
rotate the loaded image in memory, but it is rotated when displaying it on-screen.

width#

Type: Number

If this blob represents an image, this is the width of the image in pixels.

If this blob doesn't represent an image, width is reported as 0.

NOTE 1: On SDK versions prior to 9.1.0, Ti.Blob images may have reported in points, not pixels.
This would occur for images with a higher density/scale returned by Titanium.UI.View.toImage or images with @dx density suffixes.
You may multiply by Titanium.Platform.DisplayCaps.logicalDensityFactor to try and determine the pixels, but this value may be off for some pixel/density combinations.
(e.g. a 10px image would report as 3 on a 3x density screen, so multiplying would give you 9 pixels, which is still incorrect)

NOTE 2: This represents the width the platform decodes the image to in memory. iOS will automatically
rotate a JPEG based on its EXIF orientation when loaded into memory, but Android does not and instead
rotates it when shown on-screen. You can read the uprightWidth to determine
what the image width will be after rotation, if applicable.

Methods #

addEventListener #

extended

Adds the specified callback as an event listener for the named event.

Parameters:
NameTypeSummaryOptional
nameStringName of the event.No
callbackCallback<Titanium.Event>Callback function to invoke when the event is fired.No

append #

Appends the data from another blob to this blob.

Parameters:
NameTypeSummaryOptional
blobTitanium.BlobBlob to append to this blob.No

applyProperties #

extended

Applies the properties to the proxy.

Properties are supplied as a dictionary. Each key-value pair in the object is applied to the proxy such that
myproxy[key] = value.

Parameters:
NameTypeSummaryOptional
propsDictionaryA dictionary of properties to apply.No

arrayBuffer #

Returns a Promise that resolves with the contents of the blob as binary data contained in an ArrayBuffer.

Returns: Promise<ArrayBuffer>

fireEvent #

extended

Fires a synthesized event to any registered listeners.

Parameters:
NameTypeSummaryOptional
nameStringName of the event.No
eventDictionaryA dictionary of keys and values to add to the Titanium.Event object sent to the listeners.Yes

imageAsCompressed #

Creates a new blob by compressing the underlying image to the specified quality.

Returns the compressed image as a blob.

If this blob doesn't represent an image, returns null.

Parameters:
NameTypeSummaryOptional
qualityNumberQuality to compress this image to. From 0.0 (lowest quality) to 1.0 (highest quality).No

Returns: Titanium.Blob — Compressed image as a blob.

imageAsCropped #

Creates a new blob by cropping the underlying image to the specified dimensions.

Returns the cropped image as a blob.

If this blob doesn't represent an image, returns null.

Parameters:
NameTypeSummaryOptional
optionsDimensionImage cropping options. <Dimension> properties are all optional for this use case.

Defaults will be to use the current image's height/width and to center the cropped rectangle horizontally/vertically on the original image (x/y).
No

Returns: Titanium.Blob — Cropped image as a blob.

imageAsResized #

Creates a new blob by resizing and scaling the underlying image to the specified dimensions.

Returns the resized image as a blob.

If this blob doesn't represent an image, returns null.

Parameters:
NameTypeSummaryOptional
widthNumberWidth to resize this image to.No
heightNumberHeight to resize this image to.No

Returns: Titanium.Blob — Resized image as a blob.

imageAsThumbnail #

Returns a thumbnail version of the underlying image, optionally with a border and rounded corners.

Returns the thumbnail image as a blob.

If this blob doesn't represent an image, returns null.

The final height/width of the image will actually be size + (2 * borderSize) as the border is added around the image.
By default the borderSize is 1.

Parameters:
NameTypeSummaryOptional
sizeNumberSize of the thumbnail, in either width or height.No
borderSizeNumberWidth of the thumbnail's border.Yes
cornerRadiusNumberRadius of the thumbnail's corners.Yes

Returns: Titanium.Blob — The image thumbnail in a blob.

imageWithAlpha #

Returns a copy of the underlying image with an added alpha channel.

Returns the new image as a blob, or null if this blob is not an image.

Returns: Titanium.Blob — The image with an alpha channel in a blob, or `null` if this blob is not an image.

imageWithRoundedCorner #

Returns a copy of the underlying image with rounded corners added.

Returns the new image as a blob, or null if this blob is not an image.
The image will grow in height and width by (2 * borderSize) as the border is added around the image to avoid scaling.
By default the borderSize is 1.

Parameters:
NameTypeSummaryOptional
cornerSizeNumberSize of the rounded corners in pixels.No
borderSizeNumberWidth of the border in pixels.Yes

Returns: Titanium.Blob — Image with a rounded corner in a blob, or `null` if this blob is not an image.

imageWithTransparentBorder #

Returns a copy of the underlying image with an added transparent border.

Returns the new image as a blob, or null if this blob is not an image.
The image will grow in height and width by (2 * borderSize) as the border is added around the image to avoid scaling.

Parameters:
NameTypeSummaryOptional
sizeNumberWidth of the transparent border in pixels.No

Returns: Titanium.Blob — The image with a transparent border in a blob, or `null` if this blob is not an image.

removeEventListener #

extended

Removes the specified callback as an event listener for the named event.

Multiple listeners can be registered for the same event, so the
callback parameter is used to determine which listener to remove.

When adding a listener, you must save a reference to the callback function
in order to remove the listener later:

var listener = function() { Ti.API.info("Event listener called."); }
window.addEventListener('click', listener);

To remove the listener, pass in a reference to the callback function:

window.removeEventListener('click', listener);
Parameters:
NameTypeSummaryOptional
nameStringName of the event.No
callbackCallback<Titanium.Event>Callback function to remove. Must be the same function passed to addEventListener.No

toArrayBuffer #

Returns an ArrayBuffer representation of this blob.

Returns: ArrayBuffer

toString #

Returns a string representation of this blob.

Returns: String

Titanium SDK Documentation