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

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

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

Регистрация: Jul 2007
Сообщений: 159
Tools Потеря качества при уменьшении изображений

Привет народ.
Такой вопрос.

Есть картинка, отрисованная в битмапдату. Юзер на ней выделяет мышкой область, которая рисуется в другую битмапдату, меньшую по ширине и высоте, с матрицей маcштабирования.

После этого рисунок, особенно на контрастных краях, сильно страдает.

Аналогичное происходит в фотошопе, когда мы уменьшаем выделенный кусок слоя, до применения изменений. После применения - уменьшенная область как-то обрабатывается, и получаем красивую уменьшенную картинку с гладкими краями.

Есть ли готовые классы по пост-обработке уменьшенной битмапдаты?
Что посоветуете?

Старый 17.09.2009, 01:30
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 2  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Код AS3:
smoothing = true;

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

Регистрация: Jul 2007
Сообщений: 159
Хотя я и пишу на ас2/3 всего несколько лет, но про smoothing я знаю)
Это очень далеко от фотошопа. Все равно что джепег с качеством 10 и 100 сравнить.

Ощущение такое, что при уменьшении, строки и столбцы пикселей накладываюстя на соседей. В итоге совершенно четкая наклонная линия выглядит как ломаная.

Старый 17.09.2009, 02:04
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 4  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
А должно быть всё нормально
А вообще не стоит изменять размеры битмапы.

Ну или скрины в студию.

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

Регистрация: Jul 2007
Сообщений: 159
Вот скрины.

Первый сделан в фотошопе, второй во флеше, и потом сохранен JPEGEncoder-ом (сразу заверю, что визуально качество после сохранения флешой совершенно не изменилось, это можно не учитывать).

Smoothing самый что ни на есть true. Без него еще хуже.

Обратитие внимание на руку, нос (бедная девушка), и др. контрастные переходы цветов. При еще большем исходном изображении искажения становятся сильнее. Но я их не стану показывать, т.к. сюжет там порнографический.

Если слегка двигать область отрисовки, то искажения смещаются, и при некотором положениий минимальны.

Что интересно, при увеличении (конечное больше исходного) искажения более приемлемы. Походу гасятся в артефактах джепега.
Изображения
   


Последний раз редактировалось morgenshtern; 17.09.2009 в 02:56.
Старый 17.09.2009, 11:22
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 6  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
часто сталкиваюсь с такой проблемой... весной написал такой вот код... Юзаю по надобности, выдрал с первого попавшегося проекта... потому, лишнее думаю выбросите сами, что нужно добавите... В принципе меня это качество устраивает.
Здесь по соображениям производительности использовался PNG энкодер, так как только на экран нужно было превьюшки выводить... Замена на JPEG на качество не повлияет...
Код AS3:
private function resize(loader:Loader):void {
 
			if (Math.max(loader.width,loader.height) > 100 ) {				
 
				var bit:BitmapData = new BitmapData(loader.width, loader.height, false);			
				bit.draw(loader, loader.transform.matrix);			
				loader.unload();
 
				var d:Bitmap=new Bitmap(bit,"auto",true);
				d.width=100;
				d.scaleY=d.scaleX;
 
				var bit2:BitmapData=new BitmapData(d.width,d.height,false);
				bit2.draw(d,d.transform.matrix);
 
				var v:Bitmap=new Bitmap(bit2);
 
				var png:ByteArray = PNGEncoder.encode(bit2);
 
				loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loaded);
				loader.contentLoaderInfo.addEventListener(Event.COMPLETE, resized);
				loader.loadBytes(png);
 
			}else {
				resized(null);				
				}
		}

Старый 17.09.2009, 11:24
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
morgenshtern, справа smoothing отсутствует.

Старый 17.09.2009, 15:56
morgenshtern вне форума Посмотреть профиль Отправить личное сообщение для morgenshtern Найти все сообщения от morgenshtern
  № 8  
Ответить с цитированием
morgenshtern
 
Аватар для morgenshtern

Регистрация: Jul 2007
Сообщений: 159
Включено там сглаживание.

Но вот другой пример.

Матрица не используется, картинка уменьшена заранее.
Просто копируем пикселы из выделенной области и рисуем в другой битмапдате.
Видите некие интерлейсные вертикальные полосы на границах? Откуда они могут быть?
Если двигать область выделения полосы оживают и перемещаются в другие места.
Получаем идентичную исходной картинку, только с этими зазубринами, в некоторых местах. В других местах - края одинаково гладкие.


Партизан, не совсем понял что вы делаете и зачем.
Итак, вы отрисовываете в битмапдату картинку с лоадера, с матрицей масштабирования.
Затемы вы создаете с битмапдаты рисунок, и масштабируете его.
Затема опять рисуете битмап в битмапдату.
Опять создаете из нее битмап...
Кодируете битмап в пнг и грузите его опять в лоадер.

Прямо какое-то колесо сансары. Мучений много, а в итоге не известно что. Сколько в мс этот процесс у вас занимает?
Это действительно дает красивую смасштабированную картинку?
Изображения
 


Последний раз редактировалось morgenshtern; 17.09.2009 в 16:23.
Старый 17.09.2009, 16:26
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 9  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
А у меня всё отлично работает

Код AS3:
		private var _loader:Loader = new Loader();
 
		public function Lol()
		{
			_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
			_loader.load(new URLRequest('1.jpg'));
 
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
		}
 
		private function onComplete(e:Event):void
		{
			var bit:Bitmap = _loader.content as Bitmap;
			addChild(bit);
			bit.smoothing = true;
 
			var bit2:BitmapData = new BitmapData(bit.width,bit.height);
			bit2.draw(bit,new Matrix(0.7,0,0,0.7,0,0));
			addChild(new Bitmap(bit2));
			getChildAt(1).x = 300;
			(getChildAt(1) as Bitmap).smoothing = true;
		}

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

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Цитата:
Сообщение от morgenshtern Посмотреть сообщение
Это действительно дает красивую смасштабированную картинку?
Сервис keep4u.ru сильно сжимает конечно, но результат думаю видно...

По времени:
Bitmap: 159
Jpeg(80): 650 включая время затраченное на Bitmap

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

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

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


 


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


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