Как я могу отправить изображение с PHP на Android, используя Volley и Json

я пытаюсь загрузить изображение, которое мне нужно загрузить с сервера,
У меня есть 3 вопроса:

  1. Я не знаю, как я могу конвертировать изображения в растровые изображения (это на стороне сервера)
  2. Как преобразовать это растровое изображение в изображение (это на стороне Android).
  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);

0

Решение

Пытаться
скольжение

или же УИЛ

Это просто и легко

2

Другие решения

  1. Храните изображения в папке на вашем сервере.
  2. Сохраните название изображения в вашей БД
  3. Пользовательские библиотеки Picasso / Imageloader / Glide для загрузки изображения.
  4. Передайте URL-адрес изображения в указанные библиотеки следующим образом: http://www.yourservername.com/imageFolderName/ImageName.jpj
  5. Имя изображения происходит из вашего ответа JSON / XML и просто добавьте его, как указано выше
1

Вы можете использовать любую из следующих библиотек

  1. скольжение Просто добавив

Следующий скрипт для вашего приложения 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);
  1. Пикассо Просто добавив
    Следующий скрипт для вашего приложения Gradle файл

compile 'com.squareup.picasso:picasso:2.5.2'

И использовать это в деятельности, как это

Picasso.with(context).load("<image-url>").into(imageView);
0

Конвертировать файл в 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;
}
0

Я нашел это в 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);

0

Я нашел решение:

В Android:

String imagepath = response.getString ("path");
String url = "YOUR-URL";
Запрос ImageRequest = новый запрос ImageRequest (URL,
новый Response.Listener<Битовая карта>() {
@Override
public void onResponse (Растровое изображение) {
ImageView imageView = (ImageView) findViewById (R.id.YOURIMAGEVIEW);
imageView.setImageBitmap (растровый);
}
}, 0, 0, ноль,
новый Response.ErrorListener () {
public void onErrorResponse (ошибка VolleyError) {
ImageView mImageView = (ImageView) findViewById (R.id.imagepractice);
mImageView.setImageResource (R.drawable.sq_br_down);
}
});
VolleyS.getInstance (PracticeActivity.this) .addToRequestQueue (запрос);

И на сервере 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);
}`
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector