問題タブ [bitmapfactory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1599 参照

android - decodeByteArray()は約90%の確率でnullを返します

ローカルネットワーク経由でAndroidデバイスに送信された画像を表示しようとしています。画像はコンピューターからtcp経由で私のAndroidデバイスに送信されます。画像はpngです。送信されるデータは、pngのバイト配列ストリームであり、googleprotobufメッセージにパッケージ化されています。Android側では、データを受信すると、データがバイト配列に読み込まれ、配列がに渡されBitmapFactory.decodeByteArray()ます。ただし、これは約90%の確率でnullを返します。これは実際のデバイスでのみ発生しますが、現時点ではhtcでしかテストできません。私はこれをandroidsdkエミュレーターで試しましたが、100%の時間で画像を取得できます。

BitmapFactoryオンラインに関連する他の問題は、常にファイルストリームの使用に関連しており、デコードではデータ全体が取得されませんが、開発者がデータ全体を確実に受信する場合の解決策はまだ見つかりません。実際のデバイスでのみ発生します。

私が知らない使用法はありdecodeByteArray()ますか?byte[]私が渡しているのはファイルそのものです。

編集:BrianCooleyからの2番目の洞察のおかげで解決しました。

エラーがdecodeByteArray()にある可能性があると判断するには速すぎました。誰かがこの問題に遭遇した場合は、データ全体が揃っていることを確認してください。私は自分のバイトストリームが良いと誤って仮定しました。したがって、最初に送受信するデータを簡単に比較し、必要なデータを取得していることを確認します。

0 投票する
1 に答える
946 参照

android - Android :: BitmapFactory 画像を切り取る

Google chart apiを使ったプロトタイプを試みています。

ここに画像の説明を入力

問題は、ブラウザでチャートを見ると、凡例が表示されることです。しかし、BitmapFactory を使用してイメージを ImageView または SD カードにダウンロードすると、凡例が失われます (これは、凡例が上、下、左、または右に配置されている場所に関係なく発生します)。

ここにコードがあります

これは、コメント行によってダウンロードされた画像です。

また、URL で指定されたグラフのサイズ (chs=500x300) が画像のサイズと一致することにも気付きました。

ここに画像の説明を入力

0 投票する
1 に答える
1307 参照

android - BitmapFactory.decodeFile()を実行しているAsyncTaskをキャンセルしてクリーンアップするにはどうすればよいですか?

私のインターフェースでは、ユーザーが可変数の曲から選択し、曲が選択されたときに、関連する背景画像を表示する必要があります。ユーザーは、画像の読み込み中もインターフェースを制御し続け、曲を変更できるようにする必要があります。

私が現在これを行う方法は、AsyncTaskを使用することです。

私はそれを使用して実行しています:

前のタスクがまだ実行中の場合はキャンセルを試み、新しく作成します。

タスクコードはビットマップの読み込みを行います。

私はリサイクル、ヌル、GCの実行をかなり混乱させました。すべて、現在のタスクをキャンセルして、新しく作成されたタスクに割り当てに使用できる十分なメモリを確保しようとしましたが、何をしようとしても、しようとすると常にメモリ不足の例外が発生します。実行が早すぎる(約4/5回)

画像は1024x768のjpgファイルで、1.5 MBのメモリ割り当てを要求します。私は、bitmapfactoryオプションを使用します。

絶対に-どんなアドバイスでもありがたいです、私はビットマップのリサイクル、ヌル、GCing、パージ可能なビットマップの使用の試みについて果てしなく検索しました。

0 投票する
0 に答える
236 参照

java - Androidのビットマップファクトリーに相当するアプレットはありますか?

Android プロジェクトがあり、プロジェクトの一部をアプレット ベースのスピンオフに移植しています。アプレットで使用できる Android の BitmapFactory 用の同様の画像操作ライブラリはありますか? 特に JPEG を読み込んでスケーリングし、JOGL テクスチャとして使用するためにビットマップに変換する必要があります。どんな提案でも大歓迎です。

0 投票する
1 に答える
963 参照

android - nullを返すBitmapFactory.decodeメソッド

このコードを使用して、ImageView内にビットマップを配置しています]

そしてそれをバイト配列の形でデータベースに保存するこのコード

このコードを使用して画像をデコードして再表示すると、nullが返されます

挿入前と取得後にバイト配列をログに記録しましたが、どちらも同じ値を返します。どこがうまくいかなかったのですか?

0 投票する
3 に答える
10262 参照

android - BitmapFactory.decodeStream(InputStream is)は、Androidでnull以外のInputStreamに対してnullを返します

私はAndroidアプリケーションを開発していますが、そのビューには複数のギャラリーが含まれています。ギャラリー(ビットマップ)のコンテンツはインターネットから赤く表示されます。

最初のギャラリーではすべて正常に機能しますが、2番目のギャラリーの最初の画像をダウンロードしようとするとBitmapFactory.decodeStream(InputStream)nullが返されますが、ストリームはnullではありません。

getThumbUrl()は画像のURL(例:http://mydomain.com/image.jpg )を返し、そのNullPointerException行にaをスローしますLog.i("MY_TAG", "Height: ... ) (これimagesArrayList私のクラスのオブジェクトを含み、URLとビットマップも保持します)。

アドバイスありがとうございます!

0 投票する
1 に答える
2142 参照

android - Android - BitmapFactory.decodeByteArray が null を返す

ソケット接続を使用して PC から Android に画像を転送しようとしています。PC から電話にデータを受信できますが、byte[]toに渡すBitmapFactoryと null が返されます。また、画像を返すこともありますが、常にではありません。

画像のサイズは です40054 bytes。一度に受信2048 bytesしているので、データを保持する小さなデータ プール (バッファ) を作成しbyteます。完全なデータを受け取った後、 に渡しますBitmapFactory。これが私のコードです:

計算

また、一度に 40054 バイト全体を読み込もうとしましたが、これもうまくいきませんでした。コードは次のとおりです。

また、最後に確認しましdecodeStreamたが、結果は同じでした。

私が間違っているところはありますか?

ありがとう

0 投票する
8 に答える
47987 参照

android - Android:decodeFileは、内部ストレージ内のファイルに対して常にnullを返します

アプリケーションのプライベートストレージにローカルに保存されたファイルがあります。私はそれが存在することを確認しました、しかし私がそれを呼ぶときはいつでもBitmapFactory.decodeFileそれは常にを返しますnull

ファイルをリソースとして保存して使用するImageView.setImageResourceと、常に正常に表示されます。

何が問題ですか?

スニペットは次のとおりです。

私も試しました:

0 投票する
1 に答える
650 参照

android - BitmapFactory.decodeFile()はnullを返しますが、画像はコンピューターで正常にレンダリングされますか?

ウェブからプロフィール写真をダウンロードしてSDカードに保存しています。画像をリストにロードします。ほとんどの場合、それは機能します。テストデータには約300枚の画像がありますが、BitmapFactory.decodeFileを使用すると、そのうちの約3枚だけがデコードに失敗します。携帯電話からコンピューターに画像をコピーすると、画像は正常にレンダリングされます。

これらの画像は部分的に破損している可能性があり、コンピュータは破損した部分を無視してレンダリングを続行すると思います。これが事実である場合、Androidで同じことを強制する方法はありますか?

なぜ失敗するのかよくわかりませんので、他に問題があると思われる場合はお知らせください。

ありがとう!

0 投票する
2 に答える
1919 参照

android - androidOutOfMemoryなしで元のサイズのビットマップをロード/保存する方法

inSampleSizeOutOfMemoryのジレンマに関する多くの議論を読みました。
良い解決策が得られないので、質問します。
現在、inSampleSize=4のビットマップを読み込んでいます。
サイズが648x388のビットマップが表示されます。
元のディスク上のサイズは2592x1592です。

648x388ビットマップにテキストを書き込んでディスクに保存しています。
2592x1592がOutOfMemoryを与えるので、私は648x388に書いています。

whileそれが機能する方法は、ループに保存される1〜10個の648x388ビットマップが存在する可能性があるということです。
このループを変更して、1-102592x1592ビットマップを保存したいと思います。

2592x1592を安全にロードするにはどうすればよいですか?
解像度が60%以上下がることは気になりません。
ビットマップのサイズが2592x1592と同じである限り。
サイズを維持しながらビットマップを薄くして、
品質を低下させることなく色を削除する方法はありますか?

私の最初の考えは、私が得ることができる最大のビットマップを取得するためにこのようなことをすることでした:私はこれをテストしていませんが、それは悪い方法だと感じています

どんな助けでもありがたいです。