I think you have a good point... the various 1MB limits are starting to feel rather antiquated in this day and age. Yeah, it's often possible to hack around them by chunking our data or using the blobstore or performing range requests... but bloody hell, it's a pain in the arse.
Just a 2 or 3X increase would help a lot. 3MB url fetches and 3MB entities would make me breathe easier. BTW there is one issue you can't work around no matter what - while you can sometimes use range requests to download large files via the URLFetch service, there is no way to upload large files. You can't POST ranges. Jeff On Wed, Jun 16, 2010 at 1:41 PM, Kelly A <[email protected]> wrote: > Really bursts of RAM usage of up to 10 megs for the term of an image > operation are not likely to increase RAM costs for the image API that > much. The case of uploading and image is some what infrequent and > they could impose quotas that would, force frequent users of large > memory consumption to pay. Not to mention, the method you described > uses the same amount of RAM to resize the image as my process would > use. The JPEG still needs to be loaded into memory, decoded into > another block of memory, resized into another bock of memory and then > encoded into yet another block of memory with both processes. > > I am not saying that I don't want to pay, I am saying that the system > should function on common data. I will happily pay when my AMOUNT of > USAGE exceeds quotas, just like every other charge in Google App > Engine. > > My specific point about turning on charging is not about paying any > way, as I would not be using enough blob store to get charged, but > having to go through extra steps to access something that should be > considered basic functionality. > > The image API right now works like a building where all of the doors > are too small for the average person to pass through. > > On Jun 16, 2:40 pm, Jaroslav Záruba <[email protected]> wrote: >> On Wed, Jun 16, 2010 at 9:32 PM, Kelly A <[email protected]> wrote: >> > So if I save an image into the blob store then load it from the blob >> > store I can work on it as long as the result is smaller than 1 >> > megabyte. >> >> > this would be extremely inefficient in my case: >> >> > 350k Jpeg stored as the primary image >> > 10k Thumbnail created from that image >> >> > I do not need to use blob store for these cases. >> >> > current process: >> >> > Get bits >> resize bits >> Save Bits >> >> > Proposed process: >> >> > Get bits >> save to Blob store >> Read from blob store >> resize bits >> > >> save bits >> >> > Since I am not storing anything larger than 1 megabyte I don't need to >> > keep the blog store around so add in a delete to delete this temporary >> > blob store item. >> >> The idea was to make images you can't load (due to their size) smaller so >> you can load them, In a way that would not bother your users. >> >> > Plus I would need to turn on billing to even get this to work. >> >> > so even though there is a work around here, I say it is still >> > desirable for the Google App team to take a look at this and see that >> > the current limitations on the Image API are not reasonable. >> >> Sure it is perfectly reasonable. Disk-space is cheap, RAM is not, working >> with images takes RAM. You want Google to buy more RAM for you but refuse to >> pay for it. >> >> On Jun 15, 3:17 pm, Jaroslav Záruba <[email protected]> wrote: >> >> >> >> > > On Tue, Jun 15, 2010 at 7:33 PM, Kelly A <[email protected]> >> > wrote: >> > > > Jaroslav, >> >> > > > Yes you can save but if you call images.resize(imagebits, 100, 100) on >> > > > an image that is greater than 1 megabyte it will throw >> > > > "RequestTooLargeError: The request to API call images.Transform() was >> > > > too large.". >> >> > >http://code.google.com/appengine/docs/java/images/overview.html#Trans... >> >> > > import com.google.appengine.api.images.Image; >> > > import com.google.appengine.api.images.ImagesService; >> > > import com.google.appengine.api.images.ImagesServiceFactory; >> > > import com.google.appengine.api.images.Transform; >> >> > > // ... >> > > BlobKey blobKey; // ... >> >> > > ImagesService imagesService = >> > ImagesServiceFactory.getImagesService(); >> >> > > Image oldImage = ImagesServiceFactory.makeImageFromBlob(blobKey); >> > > Transform resize = ImagesServiceFactory.makeResize(200, 300); >> >> > > Image newImage = imagesService.applyTransform(resize, oldImage); >> >> > > byte[] newImageData = newImage.getImageData(); >> >> > -- >> > You received this message because you are subscribed to the Google Groups >> > "Google App Engine" group. >> > To post to this group, send email to [email protected]. >> > To unsubscribe from this group, send email to >> > [email protected]<google-appengine%2Bunsubscrib >> > [email protected]> >> > . >> > For more options, visit this group at >> >http://groups.google.com/group/google-appengine?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-appengine?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
