URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存

来源:互联网 发布:java 文件读写权限 编辑:程序博客网 时间:2024/06/06 04:35
  1. package project.test {    
  2.         
  3.     import flash.display.*;     
  4.     import flash.net.*;    
  5.     import flash.events.*;    
  6.     import flash.utils.ByteArray;    
  7.         
  8.     import fl.controls.Button;    
  9.         
  10.     import com.klstudio.images.JPGEncoder;    
  11.         
  12.     public class Test12 extends Sprite{    
  13.         private var _base:Shape;    
  14.         private var _rnd_button:Button;    
  15.         private var _submit_button:Button;    
  16.             
  17.         private static const UPLOAD_PAGE:String="http://localhost:8080/upload.jsp";     
  18.             
  19.         public function Test12(){               
  20.             _base = new Shape();    
  21.             _base.x = _base.y = 5;    
  22.             addChild(_base);                
  23.             drawLine();         
  24.                 
  25.             _rnd_button = new Button();    
  26.             _rnd_button.label = "随机画图";    
  27.             _rnd_button.setSize(90,22);    
  28.             _rnd_button.move(5,205);    
  29.             _rnd_button.addEventListener(MouseEvent.CLICK,clickHandler);    
  30.             addChild(_rnd_button);    
  31.                 
  32.             _submit_button = new Button();    
  33.             _submit_button.label = "保存图片";    
  34.             _submit_button.setSize(90,22);    
  35.             _submit_button.move(105,205);    
  36.             _submit_button.addEventListener(MouseEvent.CLICK,clickHandler);    
  37.             addChild(_submit_button);    
  38.         }    
  39.             
  40.         public function drawRndRect():void{    
  41.             _base.graphics.beginFill(getRndColor());    
  42.             var gWidth:uint = getRndInt();    
  43.             var gHeight:uint = getRndInt();    
  44.             var gX:uint = getRndInt(5,180-gWidth+5);    
  45.             var gY:uint = getRndInt(5,180-gHeight+5);    
  46.             _base.graphics.drawRect(gX,gY,gWidth,gHeight);              
  47.         }    
  48.             
  49.         public function getRndInt(min:uint=10,max:uint=180):uint{    
  50.             return uint(Math.random()*(max-min))+min;    
  51.         }    
  52.             
  53.         public function getRndColor():uint{    
  54.             var r:uint = getRndInt(10,220);    
  55.             var g:uint = getRndInt(10,220);    
  56.             var b:uint = getRndInt(10,220);    
  57.             var c:uint = (r << 16) + (g << 8) + b;    
  58.             return c;    
  59.         }    
  60.             
  61.         public function drawLine():void{                
  62.             _base.graphics.beginFill(0x666666);    
  63.             _base.graphics.drawRect(0,0,190,190);    
  64.             _base.graphics.beginFill(0xFFFFFF);    
  65.             _base.graphics.drawRect(1,1,188,188);    
  66.             _base.graphics.endFill();    
  67.         }    
  68.             
  69.         public function getBitmapData():BitmapData{    
  70.             var bmd:BitmapData = new BitmapData(_base.width,_base.height);    
  71.             bmd.draw(_base);    
  72.             return bmd;    
  73.         }    
  74.             
  75.         public function submit():void{    
  76.             _rnd_button.enabled = false;    
  77.             _submit_button.enabled = false;    
  78.             var encoder:JPGEncoder = new JPGEncoder(80);    
  79.             var bytes:ByteArray = encoder.encode(getBitmapData());    
  80.             var request:URLRequest = new URLRequest(UPLOAD_PAGE);    
  81.             //data值就为图片编码数据ByteArray;    
  82.             request.data = bytes;    
  83.             request.method = URLRequestMethod.POST;    
  84.             //这个是关键,内容类型必须是下面文件流形式;    
  85.             request.contentType = "application/octet-stream";    
  86.                 
  87.             var loader:URLLoader = new URLLoader();             
  88.             loader.addEventListener(Event.COMPLETE, completeHandler);    
  89.             loader.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);    
  90.             loader.load(request);    
  91.         }    
  92.             
  93.         private function completeHandler(event:Event):void{    
  94.             trace("图片上传成功");    
  95.             _rnd_button.enabled = true;    
  96.             _submit_button.enabled = true;    
  97.         }    
  98.             
  99.         private function errorHandler(event:IOErrorEvent):void{    
  100.             trace("图片上传失败");    
  101.             _rnd_button.enabled = true;    
  102.             _submit_button.enabled = true;    
  103.         }    
  104.             
  105.         private function clickHandler(event:MouseEvent):void{    
  106.             switch(event.target){    
  107.                 case _rnd_button:    
  108.                     _base.graphics.clear();    
  109.                     drawLine();    
  110.                     drawRndRect();    
  111.                     drawRndRect();    
  112.                     drawRndRect();    
  113.                     drawRndRect();    
  114.                     break;    
  115.                 case _submit_button:    
  116.                     submit();    
  117.                     break;    
  118.             }    
  119.         }    
  120.     }       

 

 

  1. package project.test {   
  2. import flash.display.*;   
  3. import flash.net.*;   
  4. import flash.events.*;   
  5. import flash.utils.ByteArray;   
  6. import fl.controls.Button;   
  7. import com.klstudio.images.JPGEncoder;   
  8. public class Test12 extends Sprite{   
  9. private var _base:Shape;   
  10. private var _rnd_button:Button;   
  11. private var _submit_button:Button;   
  12. private static const UPLOAD_PAGE:String="http://localhost:8080/upload.jsp";   
  13. public function Test12(){   
  14. _base = new Shape();   
  15. _base.x = _base.y = 5;   
  16. addChild(_base);   
  17. drawLine();   
  18. _rnd_button = new Button();   
  19. _rnd_button.label = "随机画图";   
  20. _rnd_button.setSize(90,22);   
  21. _rnd_button.move(5,205);   
  22. _rnd_button.addEventListener(MouseEvent.CLICK,clickHandler);   
  23. addChild(_rnd_button);   
  24. _submit_button = new Button();   
  25. _submit_button.label = "保存图片";   
  26. _submit_button.setSize(90,22);   
  27. _submit_button.move(105,205);   
  28. _submit_button.addEventListener(MouseEvent.CLICK,clickHandler);   
  29. addChild(_submit_button);   
  30. }   
  31. public function drawRndRect():void{   
  32. _base.graphics.beginFill(getRndColor());   
  33. var gWidth:uint = getRndInt();   
  34. var gHeight:uint = getRndInt();   
  35. var gX:uint = getRndInt(5,180-gWidth+5);   
  36. var gY:uint = getRndInt(5,180-gHeight+5);   
  37. _base.graphics.drawRect(gX,gY,gWidth,gHeight);   
  38. }   
  39. public function getRndInt(min:uint=10,max:uint=180):uint{   
  40. return uint(Math.random()*(max-min))+min;   
  41. }   
  42. public function getRndColor():uint{   
  43. var r:uint = getRndInt(10,220);   
  44. var g:uint = getRndInt(10,220);   
  45. var b:uint = getRndInt(10,220);   
  46. var c:uint = (r << 16) + (g << 8) + b;   
  47. return c;   
  48. }   
  49. public function drawLine():void{   
  50. _base.graphics.beginFill(0x666666);   
  51. _base.graphics.drawRect(0,0,190,190);   
  52. _base.graphics.beginFill(0xFFFFFF);   
  53. _base.graphics.drawRect(1,1,188,188);   
  54. _base.graphics.endFill();   
  55. }   
  56. public function getBitmapData():BitmapData{   
  57. var bmd:BitmapData = new BitmapData(_base.width,_base.height);   
  58. bmd.draw(_base);   
  59. return bmd;   
  60. }   
  61. public function submit():void{   
  62. _rnd_button.enabled = false;   
  63. _submit_button.enabled = false;   
  64. var encoder:JPGEncoder = new JPGEncoder(80);   
  65. var bytes:ByteArray = encoder.encode(getBitmapData());   
  66. var request:URLRequest = new URLRequest(UPLOAD_PAGE);   
  67. //data值就为图片编码数据ByteArray;   
  68. request.data = bytes;   
  69. request.method = URLRequestMethod.POST;   
  70. //这个是关键,内容类型必须是下面文件流形式;   
  71. request.contentType = "application/octet-stream";   
  72. var loader:URLLoader = new URLLoader();   
  73. loader.addEventListener(Event.COMPLETE, completeHandler);   
  74. loader.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);   
  75. loader.load(request);   
  76. }   
  77. private function completeHandler(event:Event):void{   
  78. trace("图片上传成功");   
  79. _rnd_button.enabled = true;   
  80. _submit_button.enabled = true;   
  81. }   
  82. private function errorHandler(event:IOErrorEvent):void{   
  83. trace("图片上传失败");   
  84. _rnd_button.enabled = true;   
  85. _submit_button.enabled = true;   
  86. }   
  87. private function clickHandler(event:MouseEvent):void{   
  88. switch(event.target){   
  89. case _rnd_button:   
  90. _base.graphics.clear();   
  91. drawLine();   
  92. drawRndRect();   
  93. drawRndRect();   
  94. drawRndRect();   
  95. drawRndRect();   
  96. break;   
  97. case _submit_button:   
  98. submit();   
  99. break;   
  100. }   
  101. }   
  102. }   

 

  1. <%@ page contentType="text/html; charset=utf-8" language="java"%>   
  2. <%@ page import="java.util.*"%>   
  3. <%@ page import="java.io.*"%>   
  4. <%    
  5. int v;    
  6. String filePath = request.getRealPath(System.currentTimeMillis()+".jpg");    
  7. BufferedInputStream inputStream = new BufferedInputStream(request.getInputStream());    
  8. FileOutputStream outputStream = new FileOutputStream(new File(filePath));    
  9. byte [] bytes = new byte[1024];    
  10. while((v=inputStream.read(bytes))>0){    
  11.     outputStream.write(bytes,0,v);    
  12. }    
  13. outputStream.close();    
  14. inputStream.close();    
  15. %>   

222222

 

 

 

  1. package project.test {   
  2.        
  3.     import flash.display.*;    
  4.     import flash.net.*;   
  5.     import flash.events.*;   
  6.     import flash.utils.ByteArray;   
  7.        
  8.     import fl.controls.Button;   
  9.        
  10.     import com.klstudio.images.JPGEncoder;   
  11.        
  12.     public class Test12 extends Sprite{   
  13.         private var _base:Shape;   
  14.         private var _rnd_button:Button;   
  15.         private var _submit_button:Button;   
  16.            
  17.         private static const UPLOAD_PAGE:String="http://localhost:8080/upload.jsp";    
  18.            
  19.         public function Test12(){              
  20.             _base = new Shape();   
  21.             _base.x = _base.y = 5;   
  22.             addChild(_base);               
  23.             drawLine();        
  24.                
  25.             _rnd_button = new Button();   
  26.             _rnd_button.label = "随机画图";   
  27.             _rnd_button.setSize(90,22);   
  28.             _rnd_button.move(5,205);   
  29.             _rnd_button.addEventListener(MouseEvent.CLICK,clickHandler);   
  30.             addChild(_rnd_button);   
  31.                
  32.             _submit_button = new Button();   
  33.             _submit_button.label = "保存图片";   
  34.             _submit_button.setSize(90,22);   
  35.             _submit_button.move(105,205);   
  36.             _submit_button.addEventListener(MouseEvent.CLICK,clickHandler);   
  37.             addChild(_submit_button);   
  38.         }   
  39.            
  40.         public function drawRndRect():void{   
  41.             _base.graphics.beginFill(getRndColor());   
  42.             var gWidth:uint = getRndInt();   
  43.             var gHeight:uint = getRndInt();   
  44.             var gX:uint = getRndInt(5,180-gWidth+5);   
  45.             var gY:uint = getRndInt(5,180-gHeight+5);   
  46.             _base.graphics.drawRect(gX,gY,gWidth,gHeight);             
  47.         }   
  48.            
  49.         public function getRndInt(min:uint=10,max:uint=180):uint{   
  50.             return uint(Math.random()*(max-min))+min;   
  51.         }   
  52.            
  53.         public function getRndColor():uint{   
  54.             var r:uint = getRndInt(10,220);   
  55.             var g:uint = getRndInt(10,220);   
  56.             var b:uint = getRndInt(10,220);   
  57.             var c:uint = (r << 16) + (g << 8) + b;   
  58.             return c;   
  59.         }   
  60.            
  61.         public function drawLine():void{               
  62.             _base.graphics.beginFill(0x666666);   
  63.             _base.graphics.drawRect(0,0,190,190);   
  64.             _base.graphics.beginFill(0xFFFFFF);   
  65.             _base.graphics.drawRect(1,1,188,188);   
  66.             _base.graphics.endFill();   
  67.         }   
  68.            
  69.         public function getBitmapData():BitmapData{   
  70.             var bmd:BitmapData = new BitmapData(_base.width,_base.height);   
  71.             bmd.draw(_base);   
  72.             return bmd;   
  73.         }   
  74.            
  75.         public function submit():void{   
  76.             _rnd_button.enabled = false;   
  77.             _submit_button.enabled = false;   
  78.             var encoder:JPGEncoder = new JPGEncoder(80);   
  79.             var bytes:ByteArray = encoder.encode(getBitmapData());   
  80.             var request:URLRequest = new URLRequest(UPLOAD_PAGE);   
  81.             //data值就为图片编码数据ByteArray;   
  82.             request.data = bytes;   
  83.             request.method = URLRequestMethod.POST;   
  84.             //这个是关键,内容类型必须是下面文件流形式;   
  85.             request.contentType = "application/octet-stream";   
  86.                
  87.             var loader:URLLoader = new URLLoader();            
  88.             loader.addEventListener(Event.COMPLETE, completeHandler);   
  89.             loader.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);   
  90.             loader.load(request);   
  91.         }   
  92.            
  93.         private function completeHandler(event:Event):void{   
  94.             trace("图片上传成功");   
  95.             _rnd_button.enabled = true;   
  96.             _submit_button.enabled = true;   
  97.         }   
  98.            
  99.         private function errorHandler(event:IOErrorEvent):void{   
  100.             trace("图片上传失败");   
  101.             _rnd_button.enabled = true;   
  102.             _submit_button.enabled = true;   
  103.         }   
  104.            
  105.         private function clickHandler(event:MouseEvent):void{   
  106.             switch(event.target){   
  107.                 case _rnd_button:   
  108.                     _base.graphics.clear();   
  109.                     drawLine();   
  110.                     drawRndRect();   
  111.                     drawRndRect();   
  112.                     drawRndRect();   
  113.                     drawRndRect();   
  114.                     break;   
  115.                 case _submit_button:   
  116.                     submit();   
  117.                     break;   
  118.             }   
  119.         }   
  120.     }      
  121. }
原创粉丝点击