The Blob and Swirl apps let you select a UIImage from your device via the image picker, but then what if you want to feed to Squeak?
Squeak doesn't know what a UIImage is so


- (NSData *) makeUIImageJPEGRepresentation: (UIImage*) image compression: (CGFloat) compress  width: (CGFloat) width height: (CGFloat) height {
	CGSize newSize;
	newSize.width = width;
	newSize.height = height;
	UIGraphicsBeginImageContext( newSize );// a CGSize that has the size you want
	[image drawInRect: CGRectMake(0,0,newSize.width,newSize.height)];
	//image is the original UIImage
	UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
	UIGraphicsEndImageContext();
	
	NSData *data = UIImageJPEGRepresentation (newImage,compress);
	[data retain];
	return data;
}

On the Smalltalk side anImage is the UIImage insance, we indicate the JPEG compression factor, and the width/height and make the call
We also have to later release the anImage, then we make the ObjectiveCBridge call to move the bytes from jpegNSData into a Smalltalk
byteArray instance and as you see free the jpegNSData NSdata instance.

stream then is a read stream that reads from the rawData which is the JPEG data, the form fromBinaryStream: figures out it's a jpeg file and reads it.

Obviously we could have a method that would directly create a Form instance from the UIImage but that would be lot's more work, yet very efficient.

	jpegNSData := sharedApplication delegate  makeUIImageJPEGRepresentation: anImage compression: 8.0  width:  (Display boundingBox width* 1.0)  height: (Display boundingBox height* 1.0).
	anImage release.
	rawData := ObjectiveCBridge fetchByteArrayFrom: jpegNSData bytes length: jpegNSData length.
	jpegNSData release.
	stream := ReadStream on: rawData.
	form := Form fromBinaryStream: stream.

There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki