【发布时间】:2012-01-21 09:39:47
【问题描述】:
是否有任何将位图数据传递到 iOS 并返回修改后的副本的示例。我正在尝试将位图转换为 jpeg - 类似于 Windows http://blog.magicalhobo.com/2011/09/12/air-3-native-extension-imagepro cessor/ 中的此示例,但它每次都崩溃。
我很确定我做错了一些基本错误但不是 iOS / Objective C 程序员我真的只是在尝试魔法咒语,我找不到任何好的例子。任何帮助表示赞赏?
肖恩
附:以下是我的尝试:
FREObject encodeJPEG(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
FREObject objectBitmapData = argv[0];
FREBitmapData bitmapData;
FREAcquireBitmapData(objectBitmapData, &bitmapData);
int width = bitmapData.width;
int height = bitmapData.height;
int stride = bitmapData.lineStride32 * 4;
uint32_t* input = bitmapData.bits32;
FREReleaseBitmapData(objectBitmapData);
UIImage *myImage = [UIImage imageWithData:input];
NSData *jpgData = UIImageJPEGRepresentation(myImage, 0.9);
FREObject objectByteArray = argv[1];
FREByteArray byteArray;
FREObject length;
FRENewObjectFromUint32(jpgData.length, &length);
FRESetObjectProperty(objectByteArray, (const uint8_t*) "length", length, NULL);
FREAcquireByteArray(objectByteArray, &byteArray);
memcpy(byteArray.bytes, jpgData.bytes, jpgData.length);
FREReleaseByteArray(objectByteArray);
return NULL;
}
【问题讨论】:
-
作为替代方案,您可以在 ActionScript 内部使用 github.com/mikechambers/as3corelib 将位图转换为 JPEG
-
它适用于 flex 移动设备,并且在 actionscript 中速度太慢 - 我想我已经破解了,一旦测试过就会很快发布。
标签: ios actionscript air air-native-extension