T

ImageAsResized for Android

ギャザングアトのアプリでは一部の処理にiOSのimageAsResizedが使われています。Titanium Mobileではこれを簡単に使うことができて、例えばカメラで撮影した画像を処理する際にリサイズをかける場合は

button.addEventListener('click', function(){
  showCamera({
    success:function(e){
      var image = e.media.imageAsResized(w, h); //これでリサイズされる
      ......
      ......
    },
    error:function(e){...},
    cancel:function(e){...}
  });
});

こんな風にやっちゃうことができます。

が、Androidだと別の関数を用意してあげる必要があります。でもimageAsResizedみたいな専用の機能はないので、ImageViewを作ってリサイズしてTiBlobに変換して、といった作業になってしまいます。

そこで、似たようなのを作ってみました。この辺のことは実はあんまりよく理解していなくて、ああした方がいいよ、こうした方がいいよという意見やパッチのある方はご遠慮なくお寄せください。

button.addEventListener('click', function(){
  showCamera({
    success:function(e){
      var androimage = require('org.selfkleptomaniac.ti.imageasresized');
      var image = androimage.cameraImageAsResized(e.media, w, h); //これでリサイズされる
      ......
      ......
    },
    error:function(e){...},
    cancel:function(e){...}
  });
});

Resouces以下のファイルをリサイズするときは

var andro_image = require('org.selfkleptomaniac.ti.imageasresized');
var image_data = andro_image.imageAsResized(88, 65, "images/face.jpg", 0);
var image_view = Ti.UI.createImageView({image:image_data, width:'auto', height:'auto'});

こんな感じ。TiBlobに変換しています。

なぜか梶芽衣子

Posted by on 8月 20, 2011 in Android, Titanium

Comments

  • myanta より:

    外部画像のときは画像がload完了していないので、リサイズできない様子ですがこちらはできないのでしょうか?

  • y より:

    あ、確かにリモートの画像ではそうなるでしょうね。loadイベントのリスナと組み合わせられるかな。

  • コメントを残す