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

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

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

Регистрация: Jan 2006
Сообщений: 179
По умолчанию Как улучшить качество после ресайза?

Собственно есть работающий модуль, но вот результаты не очень удовлетворяют, есть функция, которая ресайзит до нужных размеров
Код AS3:
// ресайз картинок
		private function resizeImg(btm:Bitmap, width:Number, height:Number):Bitmap {
			var matrix:Matrix = new Matrix();
			var myBitmap:Bitmap;
			var size:Number = 1;
 
			if (btm.width > width || btm.height > height) {
				size = Math.min(width / btm.width, height / btm.height);
				matrix.scale(size, size);
				var myBitmapData = new BitmapData(btm.width * size, btm.height * size, true);
				myBitmapData.draw(btm, matrix, null, null,null, true);
				myBitmap = new Bitmap(myBitmapData, PixelSnapping.NEVER, true);
			} else 
				myBitmap=btm;
			return myBitmap;
		}
После этого я все докодирую через alchemy
Код AS3:
jpegQuality= 100;
 
jpeglib.encodeAsync(encodeComplete, imgData, imgEncoded, imgBitmap.width, imgBitmap.height, jpegQuality);
Качестов не совсем ужасное но хотелось бы лучше, особенно когда картинка большая 800 на 600 видны все косяки

Причем заметил такую ситуацию:
Допустим у меня в настройках стоит ресайзить до 800 на 600
Так вот если я гружу файл 1200 на 700 большие искажения
а чем размеры приближены к 800 на 600, тем искажений меньше ...
Все-таки в чем косяк?


Последний раз редактировалось motoroller; 30.03.2011 в 22:58.
Старый 30.03.2011, 23:33
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
А пример картинки и результата не покажете? И обычный JPEGEncoder тоже плохо делает?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 31.03.2011, 00:37
DZHETIGAPA вне форума Посмотреть профиль Отправить личное сообщение для DZHETIGAPA Найти все сообщения от DZHETIGAPA
  № 3  
Ответить с цитированием
DZHETIGAPA
[+3 18.04.11]

Регистрация: Dec 2010
Сообщений: 342
А smoothing не помогает?

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

Регистрация: Jan 2006
Сообщений: 179
Так примеры сейчас:
ну а входящая картинка отичная макетная


а вот ресайз до 640 на 480


Добавлено через 2 минуты
Делал кстати раньше обычным jpeg encoder
Вроде бы результат такой же ... а вы думаете это проблема в декодере или в моей функции ресайза?

Добавлено через 5 минут
Подскажите а как использовать smoothing?
На всамом деле во вконтакте фотки ничего выглядят,
хотя если я загружаю большие 3000 на 4000 они тоже ничего
ну вот все почему-то от размера входящего файла зависит я имею ввиду качество, ресайза

Добавлено через 7 минут
Вы предлагает поставить PixelSnapping.ALWAYS ?

Добавлено через 9 минут
Последнее попробовал не помогло

Добавлено через 11 минут
Кстати new Bitmap(myBitmapData, PixelSnapping.AUTO, true);
Последний параметр это и есть smoothing
так что он у меня изначально был включен

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
1. Соотношение сторон у 1200х700 и у 800х600 разное. Вы сами искажаете картинку, декодер тут не причем. Уменьшайте картинку пропорционально.
2. При достаточно больших значениях уменьшения, лучше уменьшать постепенно. Четвертями или половинами, в зависимости от величины уменьшения.

Старый 06.04.2011, 17:20
motoroller вне форума Посмотреть профиль Отправить личное сообщение для motoroller Найти все сообщения от motoroller
  № 6  
Ответить с цитированием
motoroller

Регистрация: Jan 2006
Сообщений: 179
Так вот функиця :
Код AS3:
// ресайз картинок
		private function resizeImg(btm:Bitmap, width:Number, height:Number):Bitmap {
			var matrix:Matrix = new Matrix();
			var myBitmap:Bitmap;
			var size:Number = 1;
 
			if (btm.width > width || btm.height > height) {
				size = Math.min(width / btm.width, height / btm.height);
				matrix.scale(size, size);
				var myBitmapData = new BitmapData(btm.width * size, btm.height * size, true);
				myBitmapData.draw(btm, matrix, null, null,null, true);
				myBitmap = new Bitmap(myBitmapData, PixelSnapping.NEVER, true);
			} else 
				myBitmap=btm;
			return myBitmap;
		}
Она как раз пропорционально умеьшает ...

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

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

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


 


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


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