Android用WebPの使用例はありますか?私は、Webページの画像のリストを取得しようとし、それらをリストビューで画像ビューで表示しようとしています。Android用WebP
私はlibwebp apiを知っていて、NDKを使ってそれをAndroidプロジェクトに統合しましたが、私のバイナリwebpを撮ってイメージビューに表示するにはどうすればいいですか?
何か助けが素晴らしいだろう!
Android用WebPの使用例はありますか?私は、Webページの画像のリストを取得しようとし、それらをリストビューで画像ビューで表示しようとしています。Android用WebP
私はlibwebp apiを知っていて、NDKを使ってそれをAndroidプロジェクトに統合しましたが、私のバイナリwebpを撮ってイメージビューに表示するにはどうすればいいですか?
何か助けが素晴らしいだろう!
NDweでlibwebpを使用します。 libwebp-0.1.3にはAndroid.mkファイル(旧式で構文エラーがありますが、それでもなお)が付属しています。また、/swig/
ディレクトリにJNIバインディングが生成されています。
PATH
にそれを置く: は、ここで私はそれが働いて得た方法です。
your_project_dir/jni
Android.mk
を交換してください。jni/src/libwebp_java_wrap.c
を下記から作成してください。jni/Application.mk
を作成します(下の内容を参照)。ndk-build
from project directory。これにより、/libs/
にファイル.so
が生成されます。 nm -D libs/armeabi/libwebp.so
で検査できます。リストでは、ネイティブライブラリ関数(WebPDecodeRGB
など)とそれらのJNIの対応(のようなJava_com_google_webp_libwebpJNI_WebPDecodeRGB
)/jni/swig/libwebp.jar
を追加表示されますAndroid.mkのコンテンツはこちらです。オリジナルから変更されました:エンコーダビットを削除しましたが、これは不要ですが、libwebp_java_wrap.c
を追加しました。include $(BUILD_STATIC_LIBRARY)
をinclude $(BUILD_SHARED_LIBRARY)
に変更しました。 libwebp_java_wrap.cため
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
src/dec/alpha.c \
src/dec/frame.c \
src/dec/idec.c \
src/dec/layer.c \
src/dec/quant.c \
src/dec/tree.c \
src/dec/vp8.c \
src/dec/webp.c \
src/dec/io.c \
src/dec/buffer.c \
src/dsp/yuv.c \
src/dsp/upsampling.c \
src/dsp/cpu.c \
src/dsp/dec.c \
src/dsp/dec_neon.c \
src/dsp/enc.c \
src/utils/bit_reader.c \
src/utils/bit_writer.c \
src/utils/thread.c \
src/libwebp_java_wrap.c \
LOCAL_CFLAGS := -Wall -DANDROID -DHAVE_MALLOC_H -DHAVE_PTHREAD -DWEBP_USE_THREAD \
-finline-functions -frename-registers -ffast-math \
-s -fomit-frame-pointer -Isrc/webp
LOCAL_C_INCLUDES += $(LOCAL_PATH)/src
LOCAL_MODULE:= webp
include $(BUILD_SHARED_LIBRARY)
コンテンツを除去符号ビットを除いて、libwebp tarballにバンドルとして、それは基本的に同じだ、hereあります。Application.mkため
内容:
# The ARMv7 is significanly faster due to the use of the hardware FPU
APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-9
ここではJavaコードで使用する方法です。バイト[]配列をint []カラー配列に変換する方法に注目してください。エンディアンが変更された場合、これは破損します。幅と高さに単一の整数の代わりに配列を使う方法にも注意してください。
static {
System.loadLibrary("webp");
}
private Bitmap webpToBitmap(byte[] encoded) {
int[] width = new int[] { 0 };
int[] height = new int[] { 0 };
byte[] decoded = libwebp.WebPDecodeARGB(encoded, encoded.length, width, height);
int[] pixels = new int[decoded.length/4];
ByteBuffer.wrap(decoded).asIntBuffer().get(pixels);
return Bitmap.createBitmap(pixels, width[0], height[0], Bitmap.Config.ARGB_8888);
}
WebPを表示するサンプルプロジェクトがありますあなたがここでやったようにアンドロイドのイメージ? –
私は、最新のWebP src(0.2.0)のために、上記のPēterisの手順を使用してこの作業を成功させました。 Pēterisのように、私はエンコーディングのサポートが必要ないので、私の更新されたAndroid.mkとlibwebp_java_wrap.cはhttps://gist.github.com/3719812で利用可能です。 –
ありがとうございます。 – geomaster
現在のところ、Webブラウザを含むAndroid搭載端末のネイティブアプリにWeb画像を表示する方法はありません。これらの画像を表示するには、サードパーティのアプリを調べなければなりません。
WebPメーリングリストによると、彼らはWebPサポートをAndroid SDKに組み込んでいます。彼らはいつ発表するのか正確には言いませんでしたが、そうするとビットマップをJPEGやPNGだけでなくWebP形式でも保存できるはずです。
EDIT:Android 4.0 aka Ice Cream Sandwichには、WebP形式のネイティブサポートが付属しています。サポートされているファイルタイプはAndroid developer siteです。
WebPはsupported for Android 4.0+、a.k.a APIレベル14 android.os.Build.VERSION >= 14
で確認できます。
GoogleはWEBPしかし画像は、Android 4.0と4.1で標準的なブラウザでとChromeの両方青questionmarksとして表示WEBP私たち自身のテストでは、アンドロイド4.0以降(http://developer.android.com/guide/appendix/media-formats.html)以降でサポートされていることを主張しています。 Android 4.2のWebPイメージは、webviewとgoogle chromeで正常に表示されるようです。
彼らはその文書に言及しています。無損失と透明度は4.2.1以上でしか動作しません。私は透明度の高い作業をしないで損失のある画像を推測しています4.0 + –
Androidライブラリを作成しました。
https://github.com/EverythingMe/webp-android
WEBP-アンドロイド我々はWEBPを愛しているので、我々はEverythingMeで使用するライブラリです。帯域幅を節約するだけでなく、APKサイズを縮小するためにも使用します。
webp-androidはクロムのwebpデコーダの適応であり、JNIラッパーを追加してJavaコードで簡単に使用できます。
<me.everything.webp.WebpImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
webp:webp_src="@drawable/your_webp_image" />
いつも全く陳腐なと愚かな理由のために、オフトピックとしてクローズ: それはそうは次のようにXMLから(付属
WebpImageView
付き)ImageViewのにイメージをWEBPロードすることも簡単です。このミーン・ジャークの正気は、継続すればスタックオーバーフローを引き起こします。 – barneypittlate Androidスタジオ2.3以降では、画像を直接Web画像に変換することができます https://developer.android.com/studio/write/convert-webp.html – datBoy