prepareBlob is a bad name for this function. What it does is get the image size and the preview image size and location.  No blob is actually prepared, however.

And notice that the old object has a blob as item.media.blob while the object passed to the callback has the blob as newItem.blob.  The objects are really quite different. I don't think you can use newItem as is in your items[] array.