Hey Greg: Thanks for the awesome tip. Never occurred to me to try this.
By just changing to use BitmapData.encode instead of JPEGEncoder.encode, it cut 95% of the processing time off. It's now coming in at under 200 ms to resize and encode a 13 MB HDR iPhone 6 Plus photograph to 800 pixels across. What a tremendous difference I'm amazed. Problem solved! You rock! Thanks!!! Erik > On Apr 24, 2017, at 11:48 AM, Greg Dove <[email protected]> wrote: > > If JPEGEncoder is an actionscript encoder, you could switch to using the > native encoding support. It is much faster. > > http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#encode() > > > > On Tue, Apr 25, 2017 at 6:45 AM, Erik J. Thomas <[email protected]> wrote: > >> Hey all: >> >> My flex mobile app posts social chat messages with an optional image. It >> uses CameraRoll to allow the user to select any image on their phone. But >> modern phones take HUGE pics. We don't need full res photos for the chat >> and don't want to use up the bandwidth uploading full images and resizing >> on the server. >> >> The API we hit accepts an octet stream of bytes that represents the file. >> All this functions fine, but it takes about 10 seconds to upload an HDR >> rear camera photo on an iPhone 6 Plus. >> >> I'd like to resize it on the client. But using both PNG and JPG encoders >> are far too slow: >> >> var bitmapData:BitmapData = new BitmapData(photo.width, photo.height, >> true, 0xffffff); >> var jpegEncoder:JPEGEncoder = new JPEGEncoder(); >> urlRequest.data = jpegEncoder.encode(bitmapData); // this takes like 12 >> seconds for a 13 MB iPhone 6 photo. >> >> So uploading is the better solution from a user experience perspective >> because UI can remain responsive while the async upload occurs. Resizing >> the image using an encoder cannot be done asynchronously so it blocks UI >> and we can do nothing but show a busy cursor. >> >> I don't like either solution. Someone out there have any ideas? >> >> Thanks. >> >> Erik >> >>
