2016-10-27 3 views
0

私はPHPを使ってアンドロイドアプリとウェブサイトを作成しています。アンドロイドアプリのエンコード画像をdbに保存します。私がウェブサイトで見せたいのと同じイメージ。私はたくさん試しましたが、ウェブサイトにその画像を表示していませんでした。 phpを使って同じ画像をデコードし、ウェブサイトに表示する方法。PHPを使って画像ファイルを解読する方法

この方法では、私はアプリから画像をエンコードするために使用:

private String encodeTobase64(Bitmap image) { 
    Bitmap bitmap_image = image; 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bitmap_image.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    byte[] b = stream.toByteArray(); 
    String imageEncoded = Base64.encodeToString(b, Base64.DEFAULT); 
    return imageEncoded; 
} 

PHPで画像を表示するには、この行:

$query = mysql_query("select * from ACCOUNT where (company_email='$email')") or die(mysql_error()); 
$value = mysql_fetch_array($query); 
$image = $value['PROFILE_PICTURE']; 

echo '<img class="img-circle" src="data:image/jpeg;base64,' . base64_encode($image) . '" width="40" height="40"/>'; 

は、誰も私を助けてください! ありがとうございます...

+0

デコードしてjpgとして保存しますが、イメージエンコードされたデータをdbに保存することはお勧めできません。サイトが遅くなります。良質の画像には大きなエンコード値が含まれているため、画像として保存してみてください。 – Kumar

+2

アンドロイド開発に精通していませんが、Bitmap.CompressFormat.PNGはJPEG画像を提案していません... – jeroen

+2

'base64_encode($ image)'。あなたはそれを2回エンコードする必要はありません。 $画像。すでにbase64でエンコードされた画像です。ですから、代わりに$ imageを使用してください。まあ、それはあなたがデータベースに入れたものに依存します。私たちはどのように知っていますか – greenapps

答えて

1

データベースに64文字列を格納するのは良い方法ではありません。

最初に、ベース64文字列をイメージに変換し、イメージパスをデータベースに保存します。

あなたは機能を次の助けを借りて、画像の中にベース64文字列をデコードすることができます

function convert_base64_to_image($base64, $image_path) { 
    $file = fopen($image_path, "wb"); 
    $image_raw_data = explode(',', $base64); 
    // get decodable part of image 
    fwrite($file, base64_decode($image_raw_data[1])); 
    fclose($file); 
    return $image_path; 
} 

は今、データベース内の画像のパスを保存し、あなたの画像を表示するために、直接、このパスを使用することができます。

echo '<img class="img-circle" src="$image_path" width="40" height="40"/>'; 
関連する問題