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

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

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

Регистрация: Apr 2008
Адрес: Kiev, Ukraine
Сообщений: 43
Отправить сообщение для sweet_fighter с помощью ICQ
По умолчанию Пропорциональное изменение размера BitmapData

Предисловие: Пользователь загружает картинку, любого размера, я ее принимаю, и предлагаю выбрать нужный квадрат для аватарки.
1. Пользователь загрузил. (bitmap)
2. Я ее уменьшил до пропорциональных размеров (bitmap.x, bitmap.y)
3. Предоставляю пользователю квадрат, который он может двигать по картинке, что бы выбрать лучшее + дублирую выбранную область.(как на картинке, где 2 это загруженная картинка, а 1 это предпросмотр вырезанной)
[IMG]http://i.***********/i5/55/83/1778355/Zapysaty.png[/IMG]
Проблема: При загрузке предпросмотра, я копирую(BitmapData) область под квадратом с оригинальным изображением, но копирование идет не с уменьшенного изображения с пункта(2), а оригинал(2345*1234px) который загрузил пользователь.
Долго бился, потом вспомнил про Matrix. Но как матрицей с ее скейлами уменьшить предпросмотр(1) до такого же размера, что и загруженая картинка(2), ведь пользователи загружают картинки с разными размерами.
Фух.. Помогите пжлста. Может кто что делал похожее. Я запутался.

Код AS3:
_bitmap = Bitmap(e.target.content); //оригинальная картинка
 
_bitmap.width = resizeW(_bitmap.width, _bitmap.height);
_bitmap.height = resizeH(_bitmap.width, _bitmap.height);//Изменили пропорционально размеры
 
 
var bmd:BitmapData = new BitmapData(_bitmap.width, _bitmap.height, true, 0x00000000); //Дублируем для превью
var bmd2:BitmapData = new BitmapData(69, 69);
bmd.draw(_bitmap, mat, null, null, null, true); //mat - матрица со скейлами (scaleX, scaleY)
 
var rect:Rectangle = new Rectangle(0, 0, 69, 69); //69*69 - размер превью-квадрата
var pt:Point = new Point(0, 0);
bmd2.copyPixels(bmd, rect, pt);
 
var bmp:Bitmap = new Bitmap(bmd2);
addChild(bmp);

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

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

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


 


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


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