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

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

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

блогер
Регистрация: Sep 2010
Сообщений: 82
Записей в блоге: 2
По умолчанию сохранить на сервер png с пустой областью

Здравствуйте. В мувиклипе флешки в виде битмапа вставляю png, в котором часть пикселей не прорисована (не белые, а именно прозрачные - как во вложении). Далее пытаюсь сохранить её в файл на сервер:
Код AS3:
package src {
	import flash.display.Sprite;
	import flash.net.*;
	import flash.utils.ByteArray;
	import flash.geom.Rectangle;
	import flash.events.*;
	import flash.display.BitmapData;
 
	import src.PNGEncoder;
 
	public class png extends Sprite {
		public function png() {
			var data_bmp:BitmapData = new BitmapData(mcLayer.width,mcLayer.height,true);
			data_bmp.draw(mcLayer); 
			var png_image_data:ByteArray = PNGEncoder.encode(data_bmp); 
			var url_req:URLRequest = new URLRequest("img_create.php");
			url_req.data = png_image_data;
			url_req.method = URLRequestMethod.POST; 
			var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
			url_req.requestHeaders.push(header);
			var u:URLLoader= new URLLoader();
			u.addEventListener(Event.COMPLETE, onCompl);
			u.load(url_req);			
		}
 
		private function onCompl(e:Event):void {
			tst.text=e.target.data;
		}
 
	}
}
скрипт
Код:
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 

$image_data = $GLOBALS["HTTP_RAW_POST_DATA"] ;
$filename_to_save = "123.png";

if(isset($image_data)){
	$png_file = fopen($filename_to_save, "wb") or die("File not opened!");
	if($png_file){
		  set_file_buffer($png_file, 20);
		  fwrite($png_file, $image_data);
		  fclose($png_file);
	}
}	

echo("done");
?>
Скрипт сохраняет файл, но в нём прозрачная область становится затушёванной белым Подозреваю, что это происходит ещё при создании битмапдаты? Как можно сделать, чтобы прозрачное оставалось прозрачным?
Изображения
 

Старый 09.09.2011, 19:28
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 2  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Точно говорить не буду , но возможно http://help.adobe.com/ru_RU/FlashPla...BlendMode.html , в draw укажите BlendMode.ALPHA . сейчас просто нет возможности проверить т.ч. это только догадка
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

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

блогер
Регистрация: Sep 2010
Сообщений: 82
Записей в блоге: 2
Код AS3:
	var data_bmp:BitmapData = new BitmapData(mcLayer.width,mcLayer.height,true);			
	mcLayer.blendMode=flash.display.BlendMode.LAYER; //и без этого			
	data_bmp.draw(mcLayer,null,null,'alpha');
к сожалению, возвращает белый прямоугольник...

Добавлено через 18 минут
Пока суть да дело, додумался грузить файлы с компа, минуя отрисовку:
Код AS3:
public static var FILE_FILTER: Array = ["Images (*.png)", "*.png;*.PNG"];
private var file0: FileReference;
 
//...
 
public function png() {
	file0 = new FileReference();
	file0.addEventListener(Event.SELECT, onFileSelected0);
	mcLayer.addEventListener(MouseEvent.CLICK, onBr);
}
 
private function onBr(e: MouseEvent): void {
	file0.browse([new FileFilter(FILE_FILTER[0], FILE_FILTER[1])]);
}
 
private function onFileSelected0(e:Event): void {
	if (file0.size == 0) {
	      return;
	}
	file0.addEventListener(Event.COMPLETE, onFileLoaded0);
	file0.load();
}
 
private function onFileLoaded0(e: Event): void {
	file0.removeEventListener(Event.COMPLETE, onFileLoaded0);
      	var png_image_data: ByteArray = ByteArray(e.target.data);
      	var url_req:URLRequest = new URLRequest("img_create.php");
      	//и т.д.	
}
Для меня этого достаточно. Но как сделать правильно draw в таком случае, всё равно интересно. Может кто-то сталкивался?

Старый 10.09.2011, 22:18
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 4  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Код AS3:
new BitmapData(mcLayer.width,mcLayer.height,true);
Создает битмапу, залитую белым, см. справку по BitmapData. Заливайте прозрачным цветом (например 0) и будет вам счастье.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 10.09.2011, 23:38
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 5  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS3:
new BitmapData(mcLayer.width,mcLayer.height,true,0);
__________________
Марк Tween

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

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

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


 


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


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