# Titanium.Blob

A container for binary data.

Availability
0.9
0.9
9.2.0

# Overview

A Blob represents a chunk of binary information, often obtained through an Titanium.Network.HTTPClient or by reading a Titanium.Filesystem.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 Titanium.Blob.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 Titanium.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.

# Properties

# file READONLY

Availability
0.9
0.9
9.2.0

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


# height READONLY

Availability
0.9
0.9
9.2.0
height :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 toImage or images with @dx density suffixes. You may multiply by logicalDensityFactor to try and determine the pixels, but this value may be off for some pixel/density combinations. (i.e. 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 READONLY

Availability
0.9
0.9
9.2.0
length :Number

Length of this blob in bytes.


# mimeType READONLY

Availability
0.9
0.9
9.2.0
mimeType :String

Mime type of the data in this blob.


# nativePath READONLY

Availability
0.9
0.9
9.2.0
nativePath :String

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

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


# size READONLY

Availability
7.2.0
0.9
9.2.0
size :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 READONLY

Availability
0.9
0.9
9.2.0
text :String

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

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


# uprightHeight READONLY

Availability
9.2.0
9.2.0
9.2.0
uprightHeight :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 READONLY

Availability
9.2.0
9.2.0
9.2.0
uprightWidth :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 READONLY

Availability
0.9
0.9
9.2.0
width :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 toImage or images with @dx density suffixes. You may multiply by logicalDensityFactor to try and determine the pixels, but this value may be off for some pixel/density combinations. (i.e. 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

# append

Availability
0.9
append(blob) void

Appends the data from another blob to this blob.

Parameters

Name Type Description
blob Titanium.Blob

Blob to append to this blob.

Returns

Type
void

# arrayBuffer

Availability
0.9
0.9
9.2.0
arrayBuffer() Promise<ArrayBuffer>

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

Returns

Type
Promise<ArrayBuffer>

# imageAsCompressed

Availability
6.1.0
6.1.0
9.2.0
imageAsCompressed(quality) Titanium.Blob

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

Name Type Description
quality Number

Quality to compress this image to. From 0.0 (lowest quality) to 1.0 (highest quality).

Returns

Compressed image as a blob.


# imageAsCropped

Availability
3.0.0
0.9
9.2.0
imageAsCropped(options) Titanium.Blob

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

Name Type Description
options Dimension

Image 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).

Returns

Cropped image as a blob.


# imageAsResized

Availability
3.0.0
0.9
9.2.0
imageAsResized(width, height) Titanium.Blob

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

Name Type Description
width Number

Width to resize this image to.

height Number

Height to resize this image to.

Returns

Resized image as a blob.


# imageAsThumbnail

Availability
3.0.0
0.9
9.2.0
imageAsThumbnail(size[, borderSize[, cornerRadius]]) Titanium.Blob

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

Name Type Description
size Number

Size of the thumbnail, in either width or height.

borderSize Number

Width of the thumbnail's border.

cornerRadius Number

Radius of the thumbnail's corners.

Returns

The image thumbnail in a blob.


# imageWithAlpha

Availability
3.0.0
0.9
9.2.0
imageWithAlpha() Titanium.Blob

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

The image with an alpha channel in a blob, or null if this blob is not an image.


# imageWithRoundedCorner

Availability
3.0.0
0.9
9.2.0
imageWithRoundedCorner(cornerSize[, borderSize]) Titanium.Blob

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

Name Type Description
cornerSize Number

Size of the rounded corners in pixels.

borderSize Number

Width of the border in pixels.

Returns

Image with a rounded corner in a blob, or null if this blob is not an image.


# imageWithTransparentBorder

Availability
3.0.0
0.9
9.2.0
imageWithTransparentBorder(size) Titanium.Blob

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

Name Type Description
size Number

Width of the transparent border in pixels.

Returns

The image with a transparent border in a blob, or null if this blob is not an image.


# toArrayBuffer

Availability
0.9
0.9
9.2.0
toArrayBuffer() ArrayBuffer

Returns an ArrayBuffer representation of this blob.

Returns

Type
ArrayBuffer

# toString

Availability
0.9
0.9
9.2.0
toString() String

Returns a string representation of this blob.

Returns

Type
String