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

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

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

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
По умолчанию Передача bitmapData на сервер POST в виде .jpeg

добрый день.

у меня такая задача. Есть приложение вконтакте. В приложении есть кнопка butScreen, при нажатии на которую производится снимок экрана при помощи BitmapData.
Код AS3:
var bitmapData:BitmapData = new BitmapData(foner.width, foner.height, false);
bitmapData.draw(foner);
var bm:Bitmap = new Bitmap(bitmapData);
далее мне нужно POST запросом отправить на сервер эту битмапу.
Пишу
Код AS3:
var sendAdress:* = new URLRequest(urla+"&photo="+bm);
sendAdress.method = URLRequestMethod.POST;													var loader:URLLoader = new URLLoader(); 			loader.addEventListener(Event.COMPLETE, completeHandler); 			loader.load(sendAdress);
и в итоге запрос выглядит так:
PHP код:
http://cs244.vkontakte.ru/upload.php?act=do_add_posted&mid=****&hash=******b96b415aa5&rhash=********bf027681ab2c43251e&swfupload=1&photo=[object%20Bitmap] 
, что, конечно же, не есть хорошо и в ответ мне приходит совсем не то, что нужно.

Вопрос. как мне вытащить из этой битмапдаты файл .jpeg или .bmp, чтобы была возможность послать его на сервер?
Облазил уже все, что можно... Ответьте, пожалуйста, если кто имеет представление об этом? Желательно более-менее подробно. Ну или вообще хоть как-нибудь!

Старый 12.02.2010, 18:44
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Для начала http://code.google.com/p/as3corelib/.../JPGEncoder.as

Старый 12.02.2010, 19:12
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 3  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
ага... класс JPGEncoder.as.. звучит многообещающе...

вот нашел такой пример

Код AS3:
function saver():void {
	var createName = 'mypict.jpg'; //--имя картинки при сохранении
	var outputpath='images/'; //--папка, в которую будут сохранятся картинки
	var bmd:BitmapData=new BitmapData(foner.width, foner.height, false); //--создаем bitmapdata
	bmd.draw(foner); //--рисуем в битмапе интересующий мувиклип
	var byteArray : ByteArray = new JPGEncoder(85).encode(bmd); //--в массив кодированное  изображение? 85 - качество.
	var urlRequest : URLRequest = new URLRequest();
	urlRequest.url = 'saver.php?path='+outputpath; //--php скрипт, который будет сохранять
	urlRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary();
	urlRequest.method = URLRequestMethod.POST;
	urlRequest.data = UploadPostHelper.getPostData(createName, byteArray);
	urlRequest.requestHeaders.push( new URLRequestHeader( 'Cache-Control', 'no-cache' ) );
	var urlLoader : URLLoader = new URLLoader();
	urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
	urlLoader.addEventListener( Event.COMPLETE, onImageCreated); //--функция обработчик  события создания фотки
	urlLoader.addEventListener( ProgressEvent.PROGRESS, onImgCreateProgress); //--функция обработчик процесса загрузки фотки
	urlLoader.load(urlRequest);
	}
попробовал применить, но UploadPostHelper ругается
1120: Access of undefined property UploadPostHelper. ...

Старый 12.02.2010, 19:23
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 4  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
это не он ругается, а на него..потому как его нет...
для вашего запроса просто в него притулите ваш byteArray картинки и отправьте. если не ошибаюсь - параметр photo

у вконтакта есть готовый пример на загрузку фотки
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 12.02.2010, 20:29
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 5  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
ну да, я пробовал так:

Код AS3:
var sendAdress:* = new URLRequest(urla+"&photo="+bm.byteArray);

Старый 15.02.2010, 19:33
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 6  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
ZergMaster, вы загрузили фотку?
Я помоему както криво получают байтовый массив:
Код AS3:
var bitmap:BitmapData = new BitmapData(80, 30, false, 0xFFCC00);
var rect:Rectangle = new Rectangle(10, 10, 40, 10);
bitmap.fillRect(rect, 0xFF0000);
 
var urlRequest:URLRequest = new URLRequest();
urlRequest.url = DataKeeper.uploadUrl + "&photo=" +bit2arr(bitmap, "ddd.jpg");
urlRequest.method = URLRequestMethod.POST;
 
var loader:URLLoader = new URLLoader();
 
loader.addEventListener(Event.COMPLETE, completeUpload);
loader.load(urlRequest);
 
private function bit2arr( bitmap:BitmapData, filename:String):ByteArray
{
	var pix:ByteArray = bitmap.getPixels(bitmap.rect);
	pix.writeShort(bitmap.width);
	pix.writeShort(bitmap.height);
	pix.writeShort(bitmap.transparent ? 1 : 0);
	pix.writeUTFBytes(filename.toLowerCase());
	pix.writeBytes(pix, 0, pix.bytesAvailable);
	pix.compress();
	return pix;
}
Выхлоп: ..."photo": "", "hash": "b484e2414a97ddc547b03809e38c9f53"}Error: Invalid photo

Старый 15.02.2010, 19:38
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 7  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,181
Код AS3:
var ba:ByteArray = new JPGEncoder().encode(myBitmapData);
__________________
Flash Developer
Папа TDP4 Team Battle

Старый 15.02.2010, 21:09
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 8  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Сообщение от cleptoman Посмотреть сообщение
это не он ругается, а на него..потому как его нет...
для вашего запроса просто в него притулите ваш byteArray картинки и отправьте. если не ошибаюсь - параметр photo
Что-то все мои старания по поводу загрузки одиночного фото без извращений оказались тщетными. Единственный способ, которым получилось: через ByteArray формировать multipart/form-data. По аналогии с примером из хелпа: http://www.adobe.com/livedocs/flash/...Reference.html
Тогда все нормально аплоадится. Видимо, туплю в чем-то, или чего-то не понимаю, или, действительно — это единственный приемлимый способ.

Цитата:
Сообщение от cleptoman Посмотреть сообщение
у вконтакта есть готовый пример на загрузку фотки
Все примеры, которые видел, или с multipart, или с FileReference.

Старый 15.02.2010, 21:49
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 9  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
ну а чем FileReference не угодил то? )
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 15.02.2010, 22:26
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 10  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Если с локального диска грузить, то да. А если нужно модифицировать предварительно, или с нуля создать изображение, то FileReference тут уже не помощник.

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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