- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
到目前为止,以下是我的 main.py。
import cgi
import datetime
import logging
from google.appengine.ext import db
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.api import images
logging.getLogger().setLevel(logging.DEBUG)
class Greeting(db.Model):
author = db.UserProperty()
content = db.StringProperty(multiline=True)
imageblob = blobstore.BlobReferebceProperty()
date = db.DateTimeProperty(auto_now_add=True)
class MainPage(webapp.RequestHandler):
def get(self):
self.response.out.write('<html><body>')
query_str = "SELECT * FROM Greeting ORDER BY date DESC LIMIT 10"
greetings = db.GqlQuery (query_str)
for greeting in greetings:
if greeting.author:
self.response.out.write('<b>%s</b> wrote:' % greeting.author.nickname())
else:
self.response.out.write('An anonymous person wrote:')
self.response.out.write("<div><img src='img?img_id=%s'></img>" %
greeting.key())
self.response.out.write(' %s</div>' %
cgi.escape(greeting.content))
self.response.out.write("""
<form action="/sign" enctype="multipart/form-data" method="post">
<div><label>Message:</label></div>
<div><textarea name="content" rows="3" cols="60"></textarea></div>
<div><label>Avatar:</label></div>
<div><input type="file" name="img"/></div>
<div><input type="submit" value="Sign Guestbook"></div>
</form>
</body>
</html>""")
class Image (webapp.RequestHandler):
def get(self):
greeting = db.get(self.request.get("img_id"))
if greeting.avatar:
self.response.headers['Content-Type'] = "image/png"
self.response.out.write(greeting.avatar)
else:
self.response.out.write("No image")
class Guestbook(webapp.RequestHandler):
def post(self):
greeting = Greeting()
if users.get_current_user():
greeting.author = users.get_current_user()
greeting.content = self.request.get("content")
avatar = get_serving_url(self.request.get("img"), size=None, crop=False)
#avatar = images.crop(self.request.get("img"), 0.0, 0.0,1.0,0.5)
greeting.avatar = db.Blob(avatar)
greeting.put()
self.redirect('/')
application = webapp.WSGIApplication([
('/', MainPage),
('/img', Image),
('/sign', Guestbook)
], debug=True)
def main():
run_wsgi_app(application)
if __name__ == '__main__':
main()
最佳答案
就像 the docs 中所说的那样:
Returns a URL that serves the image. This URL format allows dynamic resizing and cropping, so you don't need to store different image sizes on the server. Images are served with low latency from a highly optimized, cookieless infrastructure.
在您的代码中,您似乎正在使用 get_serving_url()
来构造一个 Blob
。这将不起作用,因为 get_serving_url()
返回一个 URL,而不是图像数据。
你似乎也混淆了 blobstore.BlobReferenceProperty
和一个 db.BlobProperty
-- BlobReferenceProperty
引用上传并存储在 blobstore 中的对象而 BlobProperty
将 blob 数据直接存储在数据存储中。
解决您的问题的更好方法是将您在请求中获得的图像(作为 BlobProperty
)存储在您的模型中,然后使用 get_serving_url()
.
或者,如果您希望存储大图像,请将图像存储在 blobstore 中并使用 BlobReferenceProperty
——无论哪种方式,您都应该只使用 get_serving_url()
提供图像,而不是存储图像。
关于image - 如何在应用引擎中使用 get_serving_url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3864045/
这似乎是一个简单的问题,但我无法弄清楚: 我在我的代码中调用 get_serving_url() 函数并得到一个错误: NameError: global name 'get_serving_url'
到目前为止,以下是我的 main.py。 import cgi import datetime import logging from google.appengine.ext import db f
有些图片(不是全部)超过了我想要的最大宽度和高度。 有没有一种方法可以使用 get_serving_url() 指定最大图像大小? 最佳答案 是的,大小是 get_serving_url 的可选第二个
我很想知道 GAE 的图像服务器可以提供哪些类型的文件。 或者更好的是,这些类型的列表/元组的位置存储在库中的某个位置(以自动支持 future 的格式)。 最佳答案 虽然Java库提供Enum Im
我可以缓存从 get_serving_url() 返回的 url 吗? url过期还有多久?我计划向我的应用程序添加缓存支持以减少负载。 非常感谢您的回复:) 最佳答案 是的,您可以缓存它,只要您为每
是否可以使用 get_serving_url 获取原始图像(具有相同尺寸)? 如果未指定大小,它似乎仍然提供缩小的图像。 最佳答案 当您使用 s=0 时,您会看到原始图像。 示例:https://lh
我想记录我正在使用 appengine 存储的图像的所有当前 url。但是,当使用 appengine 的 remote_api_shell.py 控制台时,我无法使用 get_serving_url
谷歌应用引擎 get_serving_url假设允许通过将“=sXX”附加到 url 来调整图像大小。它似乎不再放大图像,即如果你给 XX 比原始图像尺寸大,它返回原始图像而不是所需的更大尺寸。 这是
我刚开始使用谷歌云服务并发现以下只能使用 blob 实现,但我想使用云存储中的图像名称。 如果可以的话,有没有办法使用 servingURL 调整图像大小我如何实现它,即如何从云存储中提供存储桶名称和
我想使用图像 API get_serving_url 在 Google Cloud Storage 上提供图像文件。get_serving_url 可以接受 Google Cloud Storage
我使用 get_serving_url 来提供存储桶中的图像时遇到以下错误。 Traceback (most recent call last): File "/base/data/home/run
get_serving_url 目前不支持独立调整图像的宽度/高度,而只允许使用“大小”参数调整方形大小。 http://code.google.com/p/googleappengine/issue
我有一个由 Google App Engine Blobstore 支持的通用文件存储,当我向用户显示其内容时,我希望将图像与其他文件区分开来 - 我希望显示每个图像的缩略图。 Python get_
是否有办法防止热链接由图像服务方法 get_serving_url() 提供的图像? 我只找到this answer但我认为它不适用于 get_serving_url()。 最佳答案 否 - 如果您想
在我切换到 GCS 之前,我曾经能够使用动态调整图像大小功能 (=s200)。这对于存储在 GCS 上的图像可能吗?我似乎无法让它工作。 我将图像上传到 GCS,保存 blobkey,然后使用 get
回复 another question ,一位评论者提到了一个未记录的 URI 选项,我不知道使用 App Engine 图像服务水平/垂直翻转图像。 The documentation提到了一些基本
转换错误 对于特定图像,此错误不断出现。 其他图片没有问题,我想知道这个异常的原因可能是什么。 来自谷歌: “尝试转换图像时出错。” 更新: 开发服务器工作正常,只有在运行时失败。 谢谢 最佳答案 如
当您使用 get_serving_url 时,它会创建一个用于提供图像的 url。然而,根据http://ikaisays.com/2010/09/08/gwt-blobstore-the-new-h
我是一名优秀的程序员,十分优秀!