![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 179
|
Собственно есть работающий модуль, но вот результаты не очень удовлетворяют, есть функция, которая ресайзит до нужных размеров
// ресайз картинок 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; } jpegQuality= 100; jpeglib.encodeAsync(encodeComplete, imgData, imgEncoded, imgBitmap.width, imgBitmap.height, jpegQuality); ![]() Причем заметил такую ситуацию: Допустим у меня в настройках стоит ресайзить до 800 на 600 Так вот если я гружу файл 1200 на 700 большие искажения а чем размеры приближены к 800 на 600, тем искажений меньше ... Все-таки в чем косяк? Последний раз редактировалось motoroller; 30.03.2011 в 22:58. |
|
|||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
А smoothing не помогает?
|
|
|||||
|
Регистрация: Jan 2006
Сообщений: 179
|
Так примеры сейчас:
ну а входящая картинка отичная макетная ![]() а вот ресайз до 640 на 480 ![]() Добавлено через 2 минуты Делал кстати раньше обычным jpeg encoder Вроде бы результат такой же ... а вы думаете это проблема в декодере или в моей функции ресайза? Добавлено через 5 минут Подскажите а как использовать smoothing? На всамом деле во вконтакте фотки ничего выглядят, хотя если я загружаю большие 3000 на 4000 они тоже ничего ну вот все почему-то от размера входящего файла зависит я имею ввиду качество, ресайза Добавлено через 7 минут Вы предлагает поставить PixelSnapping.ALWAYS ? Добавлено через 9 минут Последнее попробовал не помогло ![]() Добавлено через 11 минут Кстати new Bitmap(myBitmapData, PixelSnapping.AUTO, true); Последний параметр это и есть smoothing так что он у меня изначально был включен |
|
|||||
|
1. Соотношение сторон у 1200х700 и у 800х600 разное. Вы сами искажаете картинку, декодер тут не причем. Уменьшайте картинку пропорционально.
2. При достаточно больших значениях уменьшения, лучше уменьшать постепенно. Четвертями или половинами, в зависимости от величины уменьшения. |
|
|||||
|
Регистрация: Jan 2006
Сообщений: 179
|
Так вот функиця :
// ресайз картинок 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. |
|
|
« Предыдущая тема | Следующая тема » |
|
|