PDA

Просмотр полной версии : Изменение уже загруженных картинок в приложение.


GogElf
16.08.2010, 18:06
Здравствуйте.
Я очень много гуглил но так и не нашел ответ на свой вопрос. Может и нашел но не заметил или просто не понимал.
Учусь самостоятельно с трудных можно сказать примеров. В общем я взял исходники с http://habrahabr.ru/blogs/flex/80954/. Много чего понял, изменил. Но не понял как и что засунуть в Bitmap из photos.getItemAt(0).fr, что бы изменить и засунуть обратно.

Буду благодарен за помощь. :drinks:

Dimitry_II
16.08.2010, 20:13
Предлагаешь штудировать код по ссылке, искать совпадения и по цепочке выстраивать код, чтобы ответить на твой вопрос? - Несколько неуклюже ...

Приведи свой код и задай вопрос - тебе с радостью помогут.

GogElf
16.08.2010, 22:47
Я взял исходники загрузчика картинок, и хотел бы в нем изменять параметры картинок. То есть размеры, форматы и т.п. При поиске я находил примеры которые изменяли параметры изображений но выводили их непосредственно в приложение.
Я бы хотел узнать чего мне превращать в Bitmap и как сохранить изменения обратно?

private var photos:ArrayCollection = new ArrayCollection;
private var frList:FileReferenceList = new FileReferenceList;
private static const _MAX_WIDTH : Number = 640;
private static const _MAX_HEIGHT: Number = 480;
private var _bitmap : Bitmap;
private var _bitmapdata : BitmapData;
private static var load_file_length: Number = 0;
private static var upload_file_length: Number = 0;
private static var upload_file_length_all: Number = 0;
private var PopUpM: Boolean = false;
private var win:popupProgress;


private function init():void
{
photos.addEventListener(CollectionEvent.COLLECTION_CHANGE,function():void
{
startUploadButton.enabled = (photos.length > 0);
clearPhotosButton.enabled = (photos.length > 0);
});
frList.addEventListener(Event.SELECT,addPhotos);
}


private function selectPhotos():void
{
var fileFilter:FileFilter = new FileFilter("Изображения jpeg, png","*.jpg;*.jpeg;*.png");
frList.browse([fileFilter]);
}

private function addPhotos(e:Event):void
{
if(PopUpM == false){
PopUpM = true;
win = PopUpManager.createPopUp(this, popupProgress, true) as popupProgress;
//PopUpManager.centerPopUp(win);
win.popupBox.width = gBox.width;
win.popupBox.height = gBox.height;
win.photosProgress.label = null;
win.photosProgress.indeterminate = true;
}
for (var i:uint = 0; i < frList.fileList.length; i++)
{
var elem:Object = new Object;
elem.fr = FileReference(frList.fileList[i]);
elem.fr.load();
elem.fr.addEventListener(Event.COMPLETE,refreshThumb);
photos.addItem(elem);
}
}
private function refreshThumb(e:Event):void
{
if(win.photosProgress.indeterminate == true){
win.photosProgress.indeterminate = false;
win.photosProgress.label = 'Загрузка изображений в приложение. %1 из %2';
}
win.photosProgress.setProgress(load_file_length++, frList.fileList.length);
photosList.invalidateList();
if(load_file_length == frList.fileList.length){
load_file_length = 0;
win.photosProgress.label = null;
PopUpM = false;
PopUpManager.removePopUp(win);
}
}


private function clearPhotos():void
{
photos.removeAll();
}

public function clearPhoto(data:Object):void
{
photos.removeItemAt(photos.getItemIndex(data));
}

private function startUpload():void
{
if(PopUpM == false){
PopUpM = true;
win = PopUpManager.createPopUp(this, popupProgress, true) as popupProgress;
//PopUpManager.centerPopUp(win);
win.popupBox.width = gBox.width;
win.popupBox.height = gBox.height;
upload_file_length = 0;
upload_file_length_all = photos.length;
}
win.photosProgress.indeterminate = true;

var request:URLRequest = new URLRequest();
request.url = "http://localhost/upload.php";
var fr:FileReference = photos.getItemAt(0).fr;
fr.cancel();
fr.addEventListener(ProgressEvent.PROGRESS,uploadProgress);
upload_file_length++;
fr.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA ,uploadComplete);
fr.upload(request);

}

private function uploadProgress(e:ProgressEvent):void
{
win.photosProgress.indeterminate = false;
win.photosProgress.label = 'Загрузка на сервер. Фотография '+upload_file_length+' из '+upload_file_length_all+' (%1 кб из %2 кб)';
win.photosProgress.setProgress(e.bytesLoaded/1024,e.bytesTotal/1024);
}

private function uploadComplete(e:DataEvent):void
{
photos.removeItemAt(0);
if (photos.length > 0)
startUpload();
else
PopUpM = false;
}

private function cancelUpload():void
{
photos.getItemAt(0).fr.cancel();
}