Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.07.2013, 18:08
sadrbox вне форума Посмотреть профиль Отправить личное сообщение для sadrbox Найти все сообщения от sadrbox
  № 1  
Ответить с цитированием
sadrbox

Регистрация: Jul 2013
Сообщений: 2
По умолчанию Загрузка изображения во Flash, изменить размер и сохранить на сервере

Задача:
  • Выбрать файл на локальном компьютере
  • Изменить размер изображения
  • Отправить на сервер для сохранения
Обработка и сохранение на сервере PHP (с этим проблем нет).


Искал везде но не нашел конкретное решение этой задачи.
Я недавно начал изучать AS3 прошу строго не судить.

Код AS3:
package  {
 
	//import (все необходимые классы)
 
	public class Main extends MovieClip {
 
		private var URLRequest:URLRequest;
		private var file:FileReference;
 
		private var bmp:BitmapData;
		private var loader:Loader;
 
		public function Main():void
		{
			loader = new Loader();
 
			URLRequest = new URLRequest();
			URLRequest.url = "upload.php";
			URLRequest.method = URLRequestMethod.POST;
 
			file = new FileReference();
			file.addEventListener(Event.SELECT, select);	
 
			browse_btn.addEventListener(MouseEvent.CLICK, browse);
		}
 
	// выбрать файл
		public function browse(e):void
		{
			var filter:FileFilter = new FileFilter('Изображения: (*.jpg, *.jpeg, *.gif, *.png)','*.jpg;*.jpeg;*.gif;*.png');
			file.browse([filter]);
		}
 
	// загрузить изображение во флэш
		public function select(e):void
		{
			file.addEventListener(Event.COMPLETE, fileLoaded);
			file.load();
		}					
 
		public function fileLoaded(e):void
		{
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgResize);
 
			//какой вариант лучше использовать ?
				loader.loadBytes(e.target.data);
			// или
				loader.loadBytes(file.data);
		}
	// изменить размер изображения
		public function imgResize(e):void
		{
 
			// какой вариант использовать ?
				loader.width = 300;
				loader.scaleY = loader.scaleX;
			// или
				bmp:BitmapData = BitmapData(loader.traget.content as Bitmap);
				bmp.width = 300;
				bmp.scaleY = bmp.scaleX; 
 
				upload();
		}
	// отправка изображения на сервер
		public function upload():void
		{
			file.upload(); // не срабатывает так как до этого было вызвано load();						
		}		
	}
 
}
Как решение: отправка и изменение размера изображения на сервере средствами PHP - не предлагать.
Буду очень благодарен за конкретные примеры с кодом.

Старый 16.07.2013, 02:22
chamele0n вне форума Посмотреть профиль Отправить личное сообщение для chamele0n Посетить домашнюю страницу chamele0n Найти все сообщения от chamele0n
  № 2  
Ответить с цитированием
chamele0n
[+4 24.04.13]
[+4 20.04.13]

Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
Код AS3:
		public function upload():void
		{
			file.upload(); // не срабатывает так как до этого было вызвано load();						
		}
ну во первых функция не сработает изза безопастности, нужно участие пользователя
вовторых тема уже обсуждалась
http://www.flasher.ru/forum/showthread.php?t=201974
__________________
Personal Page
$demo = $away3d + $bullet + $pathfinding;

Старый 16.07.2013, 13:30
sadrbox вне форума Посмотреть профиль Отправить личное сообщение для sadrbox Найти все сообщения от sadrbox
  № 3  
Ответить с цитированием
sadrbox

Регистрация: Jul 2013
Сообщений: 2
Сделал так:
Были проблемы с классом JPEGEncoder. Нашёл рабочий JPEGEncoder http://www.bytearray.org/?p=775
Код AS3:
package  {
 
	import flash.display.MovieClip;
	import flash.net.URLRequest;
	import flash.net.URLLoader;
	import flash.net.FileReference;
	import flash.display.Loader;
	import flash.display.BitmapData;
	import flash.display.Bitmap;
	import flash.events.Event;
	import flash.net.FileFilter;
	import flash.events.MouseEvent;
	import flash.net.URLRequestMethod;
 
 
	public class Main extends MovieClip {
 
		private var filter:FileFilter = new FileFilter('Изображения: (*.jpg, *.jpeg, *.gif, *.png)','*.jpg;*.jpeg;*.gif;*.png');
 
		private var url:URLRequest = new URLRequest();
		private var urlLoader:URLLoader = new URLLoader();
		private var file:FileReference = new FileReference();;
		private var loader:Loader = new Loader();;
 
		public function Main() {
 
			browse_btn.addEventListener(MouseEvent.CLICK, browse);
		}
 
		public function browse(e)
		{
 
			file.addEventListener(Event.SELECT, select);			
			//file.addEventListener(IOErrorEvent.IO_ERROR, error);
			//file.addEventListener(ProgressEvent.PROGRESS, progress);
			//file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, response);
 
			file.browse([filter]);
		}
		// загрузить изображение во флэш
		public function select(e:Event):void
		{
			file.addEventListener(Event.COMPLETE, getLoader);
			try
			{
				file.load();
			}
			catch (e:Error)
			{
			}
		}
		// 
		public function getLoader(e:Event):void
		{
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, upload);
			loader.loadBytes(file.data);
		}
		//
		public function upload(e):void
		{
			var bmpData:BitmapData = imgResize(loader.content as Bitmap);
			var fileName:String = String(new Date().getTime());
			var jpg:JPEGEncoder = new JPEGEncoder();
			url.data = jpg.encode(bmpData);
			url.url = "http://мой_сайт/upload.php?name="+fileName+"&d="+new Date().getTime();		 
			url.method = URLRequestMethod.POST;
			url.contentType = 'application/octet-stream';
			urlLoader.load(url);
		}
		//
		public function imgResize(bit:Bitmap):BitmapData
		{
	         var w:Number = 800;
    var h:Number = 600;
    //var sourceBitmapData:BitmapData = new MyBitmapData();
 
    var sx:Number = w / bit.width;
    var sy:Number = h / bit.height;
    var bitmap:Bitmap = new Bitmap( new BitmapData( w, h ) );
        bitmap.bitmapData.draw( bit.bitmapData, new Matrix( sx, 0, 0, sy, 0, 0 ) );
 
	return bitmap.bitmapData;
 
		}
 
	}
}


Последний раз редактировалось sadrbox; 16.07.2013 в 13:40. Причина: НЕ ВЕРНЫЙ КОД
Создать новую тему Ответ Часовой пояс GMT +4, время: 23:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:34.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.