質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

3回答

4571閲覧

AndroidでBitmapをbyte[]に変換する際に文字化けしてしまう

mio0707

総合スコア11

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2016/08/09 02:34

編集2016/08/10 01:42
最終追記

以下の内容は私の誤った認識の元で質問しておりました。
以下に記述している処理で文字化けは発生いたしません。

デバッグ実行している際に、 そもそもテキストではないファイルをテキスト表示したことで 文字化けが発生し画像データが壊れてしまったと誤った認識をしていました。

拝見していただきありがとうございます。
不足・不手際等ございましたら、ご指摘いただければと思います。

###前提・実現したいこと
ImageViewの画像をbyte[]形式に変換したいです。

前提・実現したいことの追記

行いたい処理としては、アプリの画像をWebページのAPIに送りたく、
下のサイトのようなマルチパートデータで送信するためにbyteに変換したいです。
http://chicketen.blog.jp/archives/1423162.html

###発生している問題・エラーメッセージ

ByteArrayOutputStream baos = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos); // ↑この時点で文字化け発生 byte[] bytes = baos.toByteArray();

上記の ByteArrayOutputStream baosが
「������JFIF����������〜」のように文字化けしてしまいます。
文字コードをセットしなければいけないのだと思うのですが私では方法を見つけることができませんでした。
文字化けの対処方法をご教示していただきたいです。
よろしくお願いいたします。

###該当のソースコード

xml

1 <ImageView 2 android:layout_width="100dp" 3 android:layout_height="100dp" 4 android:id="@+id/imageView1" 5 android:layout_alignParentTop="true" 6 android:layout_alignParentStart="true" 7 android:src="@drawable/image1" /> 8 9 <Button 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 android:text="change" 13 android:id="@+id/button1" 14 android:layout_alignBottom="@+id/imageView1" 15 android:layout_centerHorizontal="true" 16 android:layout_marginBottom="29dp" /> 17

java

1MainActivity.java 2 3import android.graphics.Bitmap; 4import android.graphics.drawable.BitmapDrawable; 5import android.support.v7.app.AppCompatActivity; 6import android.os.Bundle; 7import android.view.View; 8import android.widget.ImageView; 9 10import java.io.ByteArrayOutputStream; 11 12public class MainActivity extends AppCompatActivity { 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_main); 18 } 19 20 public void change(View view) { 21 ImageView iv1 = (ImageView) findViewById(R.id.imageView1); 22 Bitmap bmp = ((BitmapDrawable)iv1.getDrawable()).getBitmap(); 23 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 24 bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos); 25 byte[] bytes = baos.toByteArray(); 26 } 27}

###補足情報(言語/FW/ツール等のバージョンなど)
OS:Mac 10.11.5
開発環境:AndroidStudio 2.1
API:21(Android5.0)以上

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

abs123

2016/08/09 02:47

文字化けというか、そもそもテキストではないファイルを、 テキスト表示したらそうなるのは当然だと思いますが・・・ どのような処理がしたいのか、追記してもらえますか?
mio0707

2016/08/09 05:59

abs123さんありがとうございます。 行いたい処理としては、アプリの画像をWebページのAPIに送りたく、 下のサイトのようなマルチパートデータで送信するためにbyteに変換したいと考えています。 http://chicketen.blog.jp/archives/1423162.html
guest

回答3

0

ベストアンサー

えっと、今のところ、間違った処理はしていない・・・というか、
何も指摘できるような処理がないので、とりあえずそのまま進めちゃってください。

ちらっと"JFIF"という文字が見えて混乱されたのではと推測しますが、
"JFIF"は、ファイルがJPEG形式であることを示す識別子のようなもので、
この部分が文字として読み取れるのは間違った動作ではありません。

投稿2016/08/09 06:21

abs123

総合スコア1280

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mio0707

2016/08/10 01:34

そのまま進めた先でも四苦八苦しましたが、現状のままでWebAPIへの画像データを送信することができました。 デバッグ実行している際に、そもそもテキストではないファイルをテキスト表示したことで文字化けが発生し画像データが壊れてしまったと誤った認識をしてしまったのが原因でした。 ありがとうございました。
guest

0

デバッグ実行している際に、そもそもテキストではないファイルをテキスト表示したことで文字化けが発生し画像データが壊れてしまったと誤った認識をしてしまったのが原因でした。
処理自体に問題はありませんでした。

投稿2016/08/10 01:45

mio0707

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

それは文字化けとは言えないですね。
テキストファイル以外をテキストとして読もうとしている時点で「やりたいこと」と、「やっていること」がずれていると思います。

何がしたいのでしょうか?

投稿2016/08/09 05:10

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mio0707

2016/08/09 06:09

yonaさんありがとうございます。 やりたいこととしては、アプリの画像をWebページのAPIに送りたく、マルチパートデータで送信するためにbyteに変換したいと考えています。
yona

2016/08/09 06:46

HttpURLConnectionをつかうことになるので、byteじゃなくてstreamとして取り扱った方がいいですね。
mio0707

2016/08/10 01:44

アドバイスありがとうございます。 現状のbyteのままでもやりたいことができましたが、 streamとして取り扱う方法も勉強させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問