Re: Flash 10. Сжатие изображений на стороне клиента
Добавлено: 2011.09.03, 05:58
вот мы и выяснили что флеш плеер 10 может обрабатывать изображения немного более чем с камер в 15 мегапикселей.. в принципе не плохо..
Форум Yii-программистов
https://yiiframework.ru/forum/
Код: Выделить всё
package
{
import flash.display.Sprite;
import flash.events.Event;
import imgResizer;
/**
* ...
* @author HaifLive
*/
public class Main extends Sprite
{
private var imgR:imgResizer;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
imgR = new imgResizer();
addChild(imgR);
}
}
}
Код: Выделить всё
package
{
import flash.display.Sprite;
import flash.events.TextEvent;
import flash.text.TextField;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.display.Loader;
import flash.net.FileReference;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.net.URLRequest;
import flash.net.URLRequestHeader;
import flash.net.URLRequestMethod;
import flash.net.URLLoader;
import flash.utils.ByteArray;
import by.blooddy.crypto.image.JPEGEncoder;
import by.blooddy.crypto.image.PNG24Encoder;
/**
* ...
* @author HaifLive
*/
public class imgResizer extends Sprite
{
private static const _MAX_WIDTH : Number = 1600;
private static const _MAX_HEIGHT : Number = 1200;
private var _myFileRef: FileReference;
private var _imgTypeFilter: FileFilter;
private var _otherTypeFilter: FileFilter;
private var _loader: Loader;
private var _bitmap: Bitmap;
public function imgResizer():void
{
super();
_myFileRef = new FileReference();
/* setup file's filters */
_imgTypeFilter = new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg; *.jpeg; *.gif; *.png");
_otherTypeFilter = new FileFilter("Other files(*)", "*");
var tf:TextField = new TextField();
tf.text = "Select";
tf.addEventListener(MouseEvent.CLICK, showWindowSelectFile);
addChild(tf);
}
public function showWindowSelectFile(event:Event):void
{
trace("start select");
_myFileRef.browse( [_imgTypeFilter, _otherTypeFilter] );
_myFileRef.addEventListener ( Event.SELECT, imageSelected );
}
private function imageSelected(event:Event):void
{
trace("File selected");
_myFileRef.load ( );
_myFileRef.addEventListener ( Event.COMPLETE, fileSelected );
trace("file name" + event.target.name );
}
private function fileSelected(event:Event):void
{
var tempFileRef : FileReference = FileReference ( event.target );
_loader = new Loader ( ) ;
_loader.contentLoaderInfo.addEventListener ( Event.COMPLETE, fileLoaded );
_loader.loadBytes ( tempFileRef.data ) ;
}
private function fileLoaded(event:Event):void
{
_bitmap = Bitmap ( event.target.content ) ;
_bitmap.smoothing = true;
if ( _bitmap.width > _MAX_WIDTH || _bitmap.height > _MAX_HEIGHT )
resizeBitmap ( _bitmap );
addChild ( _bitmap );
var jpgSource:BitmapData = new BitmapData (_bitmap.width, _bitmap.height);
jpgSource.draw(this);
removeChild( _bitmap );
var jpgStream:ByteArray = by.blooddy.crypto.image.JPEGEncoder.encode(jpgSource);
/* Send file */
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var jpgURLRequest:URLRequest = new URLRequest("http://test1.ru/jpegencoder/loadFile.php");
var loader:URLLoader = new URLLoader();
jpgURLRequest.requestHeaders.push(header);
jpgURLRequest.method = URLRequestMethod.POST;
jpgURLRequest.data = jpgStream;
//loader.addEventListener ( ProgressEvent.PROGRESS, progressHandler ) ;
//navigateToURL(jpgURLRequest, "_blank");
try {
loader.load(jpgURLRequest);
} catch (error:Error) {
trace("Unable to load requested document.");
}
}
private function resizeBitmap( target : Bitmap ) : void
{
if ( target.height > target.width ) {
target.width = _MAX_WIDTH;
target.scaleY = target.scaleX;
} else if ( target.width >= target.height ) {
target.height = _MAX_HEIGHT;
target.scaleX = target.scaleY;
}
}
}
}
Код: Выделить всё
<?php
$fp = fopen( 'file.jpg', 'wb' );
fwrite( $fp, $GLOBALS[ 'HTTP_RAW_POST_DATA' ] );
// fwrite( $fp, "test");
fclose( $fp );
?>
Я просто не увидел, чем он лучше AS3. Мне почему-то показалось, что это всего лишь надстройка на AS. AS3 в отличии от предыдущих версий доработали(хотя я только познакомился с AS), и он стал более менее похож на нормальный язык программирования с типизацией, хотя недостатки всё таки есть, а у кого их нет.Ekstazi писал(а):А чем haxe плох ? )
Вместо try лучше подписаться на ошибкуtry {
loader.load(jpgURLRequest);
} catch (error:Error) {
trace("Unable to load requested document.");
}