0

В настоящее время я работаю над Android-приложением, которое позволяет пользователю поворачивать изображение, а затем сохранять его. Я могу сохранить изображение, но когда я его проверю, он не вращается. Был бы признателен, если кто-то может указать мне в правильном направлении.Поворот и сохранение изображения в титане?

Вот мой код:

_rotateLeft.addEventListener('click', function(e){ 
      _rotationDegree = _rotationDegree - 90; 
      var t = Ti.UI.create2DMatrix(); 
      //t.rotate(90); 
      //imageContainer.transform = t; 

      imageContainer.animate({ 
       transform: t.rotate(_rotationDegree) 
      }); 
     }); 

_saveButton.addEventListener('click', function(){ 
    var imgSave = imageView.toImage(); 
    var moment   = require('alloy/moment'); 

    var directory = Ti.Filesystem.getFile(Ti.Filesystem.externalStorageDirectory, 'images/test'); 
    !directory.exists() && directory.createDirectory(); 

    var fileName  = String.format('rotate_%s.jpg', moment().format('YYYY-MM-DD-HH-mm')); 
    var file   = Ti.Filesystem.getFile(directory.resolve(), fileName); 
    var fileNativePath = file.nativePath; 
    // Write media to file 
    //file.write(newBlob); 
    file.write(imgSave); 

    Ti.API.info('New Save File : ' + JSON.stringify(file)); 

    imageView.setImage(file); 

}); 

Вот мое мнение:

<View id="imageContainer"> 
     <!--<View id="imageUploadedView"></View>--> 
     <ImageView id="imageView"></ImageView> 
    </View> 

ответ

0

Там 2 вещи, которые я нашел странным в вашем коде:

1 - Вы вращающаяся imageContainer, а затем вы снимаете imageView.toImage();, который я думаю, что и является причиной вопроса, потому что:

  • Вращающийся вид контейнера поворачивается дочерние элементы также и захват child.toImage(); вернет вам пользовательский интерфейс этого ребенка независимо от поворота (хотя я не уверен на 100%, потому что я предпочел бы ниже шаг для выполнения этой задачи).
  • Для правильной работы поверните imageView и используйте imageContainer.toImage();, так что дочерний вид будет повернут, а родительский вид может сохранить свое вращение.

2 - Внутри _saveButton нажмите событие, используйте эту строку: imageView.setImage(file.read());, потому что вы не читали блоб данные файла в коде.

0

Вам нужно сначала объявить преобразование, а затем применить преобразование к представлению перед сохранением.

_rotateLeft.addEventListener('click', function(e){ 
    var rotateTransform = Ti.UI.create2DMatrix({ 
    rotate: 45 
    }); 

imageContainer.transform = rotateTransform; 
} 

Ссылка: http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.2DMatrix

Смежные вопросы