大家好。
我正在尝试编写一个 android 应用程序,它应该从 mysql 数据库中检索一个 blob 并将其转换为 android 上的 ImageView 。
我可以成功地将图像加载到网络服务器 (XAMPP),将其编码为 blob 并将其存储在 sql 表中。
大家好!
公共(public)类 RequestHandler {
public String sendGetRequest(String uri) {
try {
URL url = new URL(uri);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String result;
StringBuilder sb = new StringBuilder();
while((result = bufferedReader.readLine())!=null){
sb.append(result);
}
return sb.toString();
} catch (Exception e) {
return null;
}
}
这里是检索图像的代码:
公共(public)类 ViewImage 扩展 AppCompatActivity 实现 View.OnClickListener{
private RequestHandler requestHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.download);
RequestHandler rh = new RequestHandler();
buttonGetImage.setOnClickListener(this); }
private void getImage() {
String id = editTextId.getText().toString().trim();
class GetImage extends AsyncTask<String,Void,Bitmap>{
ProgressDialog loading;
RequestHandler rh = new RequestHandler();
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(ViewImage.this, "Uok..", null,true,true);
}
@Override
protected void onPostExecute(Bitmap b) {
super.onPostExecute(b);
loading.dismiss();
imageView.setImageBitmap(b);
}
@Override
protected Bitmap doInBackground(String... params) {
String id = params[0];
String add = "http://192.168.1.121:8080/getImage.php?id="+id;
URL url = null;
Bitmap image = null;
try {
url = new URL(add);
rh.sendGetRequest(add);
image = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
}
GetImage gi = new GetImage();
gi.execute(id);
}
@Override
public void onClick(View v) {
getImage();
}
这里是 php 脚本:
if($_SERVER['REQUEST_METHOD']=='GET'){
$id = $_GET['id'];
$sql = "select * from image where id = '$id'";
require_once('dbConnect.php');
$r = mysqli_query($con,$sql);
$result = mysqli_fetch_array($r);
header('content-type: image/jpeg');
echo base64_decode($result['image']);
mysqli_close($con);
}else{
echo "Error";
}
关于我在这里做错了什么有什么想法吗?
谢谢!
最佳答案
As we know that, Image parsing we are using Bitmap, or Base64 Ecodder.
I suggest you to use library like Glide, Picasso this is official library...
You don't have to write so much code.
Avoid to use Boiler Plate Code in Development.
Picasso
Picasso.get()
.load(url)
.resize(50, 50)
.centerCrop()
.into(imageView)
Glide
GlideApp.with(context)
.load("http://via.placeholder.com/300.png")
.override(300, 200)
.into(ivImg);
关于java - 无法从 PHP Mysql 检索图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55981366/