|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Dec 2006
Сообщений: 1,764
|
задать размеры изображения при сохранении без ресайза сцены
Столкнулся с проблемой, я перед сохранением задаю размеры 200х300:
import flash.utils.ByteArray; import flash.net.URLRequestHeader; import flash.net.URLRequestMethod; import flash.net.*; import com.adobe.images.JPGEncoder; function savePic(event:MouseEvent):void { var temp:BitmapData = new BitmapData(pic.width = 200,pic.height = 300); temp.draw(pic); var image = new Bitmap(temp); var jpgimage:JPGEncoder = new JPGEncoder(100); var ba:ByteArray = jpgimage.encode(temp); var save:FileReference = new FileReference(); save.save(ba, "image.jpg"); } saveBtn.addEventListener(MouseEvent.CLICK, savePic); Цитата:
__________________
а за окном атлантический океан! |
|
|||||
strange mood
|
Если непонятно, я объясню, что у вас происходит в этой строчке:
Фактически вы присваиваете размеры вашему изображению на сцене, и результат присвоения (т.е. присвоенные значения) передаете в конструктор битмапдаты. Это эквивалентно следующему: pic.width = 200; pic.height = 300; var temp:BitmapData = new BitmapData(pic.width, pic.height); Самый простой вариант решения проблемы - запомнить размеры картинки, присвоить нужные размеры, отрисовать, и восстановить старые размеры. Вариант посложнее (и в данном случае более правильный) - использовать при отрисовке матрицу трансформации. При этом само изображение на сцене не будет уменьшено, а в битмапдату отрисуется с масштабированием.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
ну и 200 и 300 в константы или в переменные.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
Регистрация: Dec 2006
Сообщений: 1,764
|
GBee твой код хороший, работает, но проблема в том, что он картинку при сохранении обрезает как-то странно, файлик приложил в аттаче
Спасибо
__________________
а за окном атлантический океан! |
|
|||||
Регистрация: Dec 2006
Сообщений: 1,764
|
код в кадрах это только для примера, с ошибками компилится, потому что не хватет еще вот этого что в аттаче
Добавил картинку в аттач так же, так же добавил и оригинальную картинку
__________________
а за окном атлантический океан! Последний раз редактировалось NikolyA; 16.02.2011 в 17:58. |
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
Все правильно. (0,0) от pic попадает в левый верхний угол результата отрисовки. У нее же 0, 0 где-то в центре. Так что матрицу еще передвинуть нужно на (-pic.getBounds(pic).x, -pic.getBounds(pic).y) (до начала масштабирования).
|
Часовой пояс GMT +4, время: 14:31. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|