я пытаюсь загрузить изображение, которое мне нужно загрузить с сервера,
У меня есть 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 = новый запрос 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);
}`