Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Node
- var http = HTTPRequest.new()
- var response = null
- onready var s = $"Sprite"
- func _ready():
- add_child(http)
- http.connect("request_completed",self,"_request_completed")
- var url = "http://cdn.shopify.com/s/files/1/0891/8314/products/Jihad_troll_face_4e2f3861ccffe_grande.jpeg?v=1459054285"
- set_texture_from_http(url,s)
- # Store response data
- func _request_completed(result, code, headers, body):
- response = {"result":result, "code":code, "headers":headers, "body":body}
- # Load JPEG or PNG texture from remote server and assign it to some sprite
- func set_texture_from_http(url, sprite):
- var img
- var tex
- # Make request
- http.request(url)
- # Await completion
- yield(http, "request_completed")
- # Check Content-Type and create Image object
- var content_type = get_content_type(response.headers)
- if content_type == "image/jpeg":
- img = Image.new()
- img.load_jpg_from_buffer(response.body)
- elif content_type == "image/png":
- img = Image.new()
- img.load_png_from_buffer(response.body)
- else:
- printerr("Unsupported Content-Type")
- if img == null:
- printerr("Failed to download image. Content-Type: ", content_type)
- else:
- # Create texture and assign to Sprite
- if sprite != null:
- tex = ImageTexture.new()
- tex.create_from_image(img)
- sprite.texture = tex
- response = null
- # Retrieve Content-Type value from response headers
- func get_content_type(headers):
- for header in headers:
- if header.to_lower().begins_with("content-type"):
- return header.split(":")[1].strip_edges().to_lower()
- return null
Advertisement
Add Comment
Please, Sign In to add comment