Add Image encode on browser

This commit is contained in:
Joshua Granick
2015-10-04 21:11:47 -07:00
parent 80e0347210
commit 17669fed07
3 changed files with 53 additions and 4 deletions

View File

@@ -347,8 +347,6 @@ class Image {
public function encode (format:String = "png", quality:Int = 90):ByteArray { public function encode (format:String = "png", quality:Int = 90):ByteArray {
#if (!html5 && !flash)
switch (format) { switch (format) {
case "png": case "png":
@@ -367,8 +365,6 @@ class Image {
} }
#end
return null; return null;
} }

View File

@@ -2,11 +2,18 @@ package lime.graphics.format;
import haxe.io.Bytes; import haxe.io.Bytes;
import lime.graphics.utils.ImageCanvasUtil;
import lime.graphics.Image; import lime.graphics.Image;
import lime.graphics.ImageBuffer; import lime.graphics.ImageBuffer;
import lime.system.CFFI; import lime.system.CFFI;
import lime.utils.ByteArray; import lime.utils.ByteArray;
#if (js && html5)
import js.Browser;
#end
@:access(lime.graphics.ImageBuffer)
#if !macro #if !macro
@:build(lime.system.CFFI.build()) @:build(lime.system.CFFI.build())
#end #end
@@ -77,6 +84,26 @@ class JPEG {
var bytes = @:privateAccess new Bytes (data.length, data.b); var bytes = @:privateAccess new Bytes (data.length, data.b);
return ByteArray.fromBytes (bytes); return ByteArray.fromBytes (bytes);
#elseif html5
ImageCanvasUtil.sync (image, false);
if (image.buffer.__srcCanvas != null) {
var data = image.buffer.__srcCanvas.toDataURL ("image/jpeg", quality / 100);
var buffer = Browser.window.atob (data.split (";base64,")[1]);
var byteArray = new ByteArray (buffer.length);
for (i in 0...buffer.length) {
byteArray.byteView[i] = buffer.charCodeAt (i);
}
return byteArray;
}
#end #end
return null; return null;

View File

@@ -6,6 +6,10 @@ import lime.graphics.Image;
import lime.system.CFFI; import lime.system.CFFI;
import lime.utils.ByteArray; import lime.utils.ByteArray;
#if (js && html5)
import js.Browser;
#end
#if format #if format
import format.png.Data; import format.png.Data;
import format.png.Writer; import format.png.Writer;
@@ -14,6 +18,8 @@ import haxe.io.Bytes;
import haxe.io.BytesOutput; import haxe.io.BytesOutput;
#end #end
@:access(lime.graphics.ImageBuffer)
#if !macro #if !macro
@:build(lime.system.CFFI.build()) @:build(lime.system.CFFI.build())
#end #end
@@ -133,6 +139,26 @@ class PNG {
} }
#elseif html5
ImageCanvasUtil.sync (image, false);
if (image.buffer.__srcCanvas != null) {
var data = image.buffer.__srcCanvas.toDataURL ("image/png");
var buffer = Browser.window.atob (data.split (";base64,")[1]);
var byteArray = new ByteArray (buffer.length);
for (i in 0...buffer.length) {
byteArray.byteView[i] = buffer.charCodeAt (i);
}
return byteArray;
}
#end #end
#end #end