![](/img/trans.png)
[英]how can i send ArrayList to Php and accept it in PHP SCripts Using volley …is there any solution without converting to Json
[英]How can i send an image from php to android, using volley and Json
我试图加载我需要从服务器加载的图像,我有3个问题:
我正在用凌空抽空提出要求。 我拥有的服务器方法是这样的:
function getImage($image_path){
$base ='images/practices/'.$image_path;
$binary=base64_encode($base);
$resp['image_binary']= $binary;
print_r(json_encode($resp));
}
我用来执行其他请求的方法是:
String url = "---------";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
//here the processing of the response...
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("error",""+error.toString());
}
}
);
VolleyS.getInstance(this).addToRequestQueue(request);
您可以使用以下任何一个库
跟随脚本到您的应用Gradle文件
repositories {
mavenCentral() // jcenter() works as well because it pulls from Maven Central
}
dependencies {
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support:support-v4:19.1.0'
}
然后您可以在活动中简单地使用这样的库
ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
Glide.with(this).load("<Image URL>").into(imageView);
compile 'com.squareup.picasso:picasso:2.5.2'
并将其用于这样的活动
Picasso.with(context).load("<image-url>").into(imageView);
将文件转换为base64
// 1 convert file to inputStream
// 2 wrap inputStream into byteArrayOutputStream
// 3 transform byteArrayOutputStream to byte array
// 4 convert byte array to Base64 object and return
public String mEncode(String filename) {
int bytesRead;
byte[] bytes = null;
byte[] buffer = new byte[8192]; // buffer
InputStream inputStream = null;
ByteArrayOutputStream byteArrayOutputStream = null;
try {
inputStream = new FileInputStream(filename);
byteArrayOutputStream = new ByteArrayOutputStream();
while ((bytesRead = inputStream.read(buffer)) != -1) {
byteArrayOutputStream.write(buffer, 0, bytesRead);
}
bytes = byteArrayOutputStream.toByteArray();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return Base64.encodeToString(bytes, Base64.DEFAULT);
}
将base64转换为文件
public static boolean convertCode2Image(String imageBase64Code, String filePath) {
boolean success = false;
try {
// Converting a Base64 String into Image byte array
byte[] imageByteArray = Base64.decodeBase64(imageDataString);
// Write a image byte array into file system
FileOutputStream imageOutFile = new FileOutputStream(filePath);
imageOutFile.write(imageByteArray);
imageOutFile.close();
success = true;
} catch (FileNotFoundException e) {
printError("Image not found" + e);
} catch (IOException ioe) {
printError("Exception while reading the Image " + ioe);
}
return success;
}
我在googledevelopers中发现了这一点,当我能够从php发送位图时,我会证明这一点。
String URL= "http://image_url.png"; ImageRequest imageRequest = new ImageRequest(URL, new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap response) { // Assign the response to an ImageView ImageView imageView = (ImageView) findViewById(R.id.imageView); imageView.setImageBitmap(response); } }, int maxWidth, int maxHeight, null, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.d(TAG , error.toString()); } }); //add request to queue queue.add(imageRequest);
我找到了解决方案:
在Android中:
String imagepath = response.getString("path"); String url = "YOUR-URL"; ImageRequest request = new ImageRequest(url, new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap bitmap) { ImageView imageView = (ImageView) findViewById(R.id.YOURIMAGEVIEW); imageView.setImageBitmap(bitmap); } }, 0, 0, null, new Response.ErrorListener() { public void onErrorResponse(VolleyError error) { ImageView mImageView = (ImageView) findViewById(R.id.imagepractice); mImageView.setImageResource(R.drawable.sq_br_down); } }); VolleyS.getInstance(PracticeActivity.this).addToRequestQueue(request);
并在PHP服务器中:
function getImage($image){
if(strpos($image,'png')){
$im = imagecreatefrompng('images/'.$image);
header('Conten-Type: image/png');
imagepng($im);
}else if(strpos($image,'jpeg')){
$im = imagecreatefromjpeg('images/'.$image);
header('Content-Type: image/jpeg');
imagejpeg($im);
}else if(strpos($image,'jpg')){
$im = imagecreatefromjpeg('images/'.$image);
header('Content-Type: image/jpeg');
imagejpeg($im);
}else{
$im = imagecreatetruecolor(120, 20);
$color_texto = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'ERROR', $color_texto);
header('Conten-Type: image/vnd.wap.wbmp');
imagewbmp($im);
}
imagedestroy($im);
}`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.