Я пытаюсь отобразить массив байтов как изображение с измененным размером. Изображение отображается правильно, но размер отключен. Позволь мне объяснить.
Сначала у меня закодированы данные изображения, поэтому мне нужно декодировать данные изображения.
// Instantiate decoder
var decoder:Base64Decoder = new Base64Decoder();
// Decode image data
decoded.decode(picture.data);
// Export data as a byteArray
var byteArray:ByteArray = decoder.toByteArray();
// Display image
var img:Image = new Image();
img.load(byteArray);
Это работает. Изображение отображается правильно. Однако, если я жестко закодирую высоту изображения (img), изображение с измененным размером отображается правильно, но в поле с размерами исходного изображения.
Например, если исходное изображение имеет высоту 300 пикселей и ширину 200 пикселей, а для свойства img.height установлено значение 75; измененное изображение с высотой 75 отображается правильно. Но изображение с измененным размером отображается в верхнем левом углу контейнера img, для которого по-прежнему задана высота 300 пикселей и ширина 200 пикселей. Почему это так? А что исправить?
Лучший способ проиллюстрировать проблему - поместить изображение внутри VBox и показать границы VBox. Из приведенного выше блока кода, если я изменю высоту изображения и установлю для изображения сохранение соотношения сторон (которое по умолчанию имеет значение true, но я добавляю его сюда для полноты картины). проблема становится ясной.
// Display image
var img:Image = new Image();
img.height = 75; // Hardcode image height (thumbnail)
img.maintainAspectRatio = true;
img.load(byteArray);
// Encapsulate the image inside a VBox to illustrate the problem
var vb:VBox = new VBox();
vb.setStyle('borderStyle', 'solid');
vb.setStyle('borderColor', 'red');
vb.setStyle('borderThickness', 2);
vb.addChild(img);
Я работал над этой проблемой несколько дней и не могу найти решения. Любые идеи? Что мне не хватает?