Menu
Who Do Is
  • Home
  • What
  • How
  • Is
  • Can
  • Are
  • Does
  • Do
  • Why
  • Who
  • Where
  • Which
  • Which
  • Should
  • Will
  • When
  • What’s
  • Did
Who Do Is

[ANSWERED] image is not uploading after crop using retrofit android

Posted on November 14, 2022

Solution 1 :

You’ve put bitmap into new variable. You’ve to put that into global variable.

bitmap = bundle!!.getParcelable<Bitmap>("data") profile?.setImageBitmap(bitmap)

Just remove val before bitmap where you’re trying to set new bitmap image into the variable.

Problem :

im referring to this tutorial for cropping –> https://www.android-examples.com/android-image-cropping-example-tutorial-pick-gallery-camera/

it is placing the cropped image in imageview in edit profile activity on submitting it is showing success that updated successfully.. but on acccount activity it is not showing image on profilepic…

when debugged it is only showing this–> data:image/png;base64 but not with encoded string(AVDBJSV3jq..)

why convertostring is null and why is it not appending string after this data:image/png;base64

i dont know why is it null

need help thanks in advance

Following is my code

class EditProfile:AppCompatActivity (){
var bitmap: Bitmap? = null
var profile:ImageView?=null
var uri: Uri? = null

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.editprofile)
    var mActionBarToolbar = findViewById<androidx.appcompat.widget.Toolbar>(R.id.toolbartable);
    setSupportActionBar(mActionBarToolbar);
    if (getSupportActionBar() != null){
        getSupportActionBar()?.setDisplayHomeAsUpEnabled(true);
        getSupportActionBar()?.setDisplayShowHomeEnabled(true);
        getSupportActionBar()?.setHomeAsUpIndicator(R.drawable.ic_keyboard_arrow_left_black_24dp);
        getSupportActionBar()?.setDisplayShowTitleEnabled(false);
    }
    val myCalendar: Calendar = Calendar.getInstance()

    val edittext1 = findViewById(R.id.dob) as EditText
    val date =
        OnDateSetListener { view, year, monthOfYear, dayOfMonth -> // TODO Auto-generated method stub
            myCalendar.set(Calendar.YEAR, year)
            myCalendar.set(Calendar.MONTH, monthOfYear)
            myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth)
            val myFormat = "dd-MM-yyyy" //In which you need put here
            val sdf = SimpleDateFormat(myFormat, Locale.US)
            edittext1.setText(sdf.format(myCalendar.getTime()))      }

    edittext1.setOnClickListener(object : View.OnClickListener {
        override fun onClick(v: View?) {
            DatePickerDialog(
                [email protected], date, myCalendar
                    .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                myCalendar.get(Calendar.DAY_OF_MONTH)
            ).show()
        }
    })
   val edit= edittext1.text
     profile = findViewById<View>(R.id.profilepic) as ImageView


    val token :String =SharedPrefManager.getInstance(applicationContext).user.access_token.toString()
    RetrofitClient.instance.fetchUser(token)
        .enqueue(object : Callback<My_account_base_response> {
            override fun onFailure(call: Call<My_account_base_response>, t: Throwable) {

                Log.d("res", "" + t)
            }

            override fun onResponse(
                call: Call<My_account_base_response>,
                response: Response<My_account_base_response>
            ) {
                var res = response

                if (res.body()?.status == 200) {

                    val retro: Myaccount_data = res.body()!!.data
                    val retro1: User_data = retro.user_data
                    Glide.with(applicationContext).load(retro1.profile_pic)
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .placeholder(R.drawable.ic_launcher_foreground)
                        .into(profile!!)
                } else {
                    try {
                        val jObjError =
                            JSONObject(response.errorBody()!!.string())
                        Toast.makeText(
                            applicationContext,
                            jObjError.getString("user_msg"),
                            Toast.LENGTH_LONG
                        ).show()
                    } catch (e: Exception) {
                        Toast.makeText(applicationContext, e.message, Toast.LENGTH_LONG).show()
                        Log.e("errorrr", e.message)
                    }
                }
            }
        })

    profile?.setOnClickListener(View.OnClickListener {

        val GalIntent = Intent(Intent.ACTION_PICK,
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI)

        startActivityForResult(Intent.createChooser(GalIntent, "Select Image From Gallery"), 2)
    })
    editsubmit.setOnClickListener {

        val first_name = firstname.text.toString().trim()
        val last_name = lastname.text.toString().trim()

        val email = emailregister.text.toString().trim()
        val phone = phoneno.text.toString().trim()

        val profile ="data:image/png;base64,"+convertToString()!!
        val token: String =
            SharedPrefManager.getInstance(
                applicationContext
            ).user.access_token.toString()
        val first_name1 =
            RequestBody.create(MediaType.parse("text/plain"), first_name)
        val last_name1 =
            RequestBody.create(MediaType.parse("text/plain"), last_name)
        val email1 =
            RequestBody.create(MediaType.parse("text/plain"), email)
        val dob1 =
            RequestBody.create(MediaType.parse("text/plain"), edittext1.text.toString())
        val phone_no1 =
            RequestBody.create(MediaType.parse("text/plain"), phone)
        val profile_pic = RequestBody.create(
            MediaType.parse("text/plain"),
            profile
        )


        val intent = Intent(this, HomeActivity::class.java)
        intent.putExtra("BitmapImage", profile)
        val map: MutableMap<String, RequestBody> = HashMap()

        map.put("first_name", first_name1);
        map.put("last_name", last_name1);
        map.put("email", email1);
        map.put("dob", dob1);
        map.put("phone_no", phone_no1);
        map.put("profile_pic", profile_pic);
        val requestFile: RequestBody =
            RequestBody.create(MediaType.parse("image/jpeg"), profile)

        val body: MultipartBody.Part =
            MultipartBody.Part.createFormData("image", "image.jpg", requestFile)
        RetrofitClient.instance.useredit(token, map)
            .enqueue(object : Callback<LoginResponse> {
                override fun onFailure(call: Call<LoginResponse>, t: Throwable) {
                    Log.d("res", "" + t)
                }

                override fun onResponse(
                    call: Call<LoginResponse>,
                    response: Response<LoginResponse>
                ) {
                    var res = response
                    Log.d("response check ", "" + response.body()?.status.toString())
                    if (res.body()?.status == 200) {
                        Toast.makeText(
                            applicationContext,
                            res.body()?.message,
                            Toast.LENGTH_LONG
                        ).show()
                        Log.d("kjsfgxhufb", response.body()?.status.toString())
                    } else {
                        try {
                            val jObjError =
                                JSONObject(response.errorBody()!!.string())
                            Toast.makeText(
                                applicationContext,
                                jObjError.getString("message") + jObjError.getString("user_msg"),
                                Toast.LENGTH_LONG
                            ).show()
                        } catch (e: Exception) {
                            Toast.makeText(applicationContext, e.message, Toast.LENGTH_LONG)
                                .show()
                            Log.e("errorrr", e.message)
                        }
                    }

                }
            })
    }
}
private fun convertToString(): String? {
      val byteArrayOutputStream = ByteArrayOutputStream()
    bitmap?.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream)
    bitmap?.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream)

    val imgByte: ByteArray = byteArrayOutputStream.toByteArray()

    return android.util.Base64.encodeToString(imgByte, android.util.Base64.NO_WRAP)
}

override fun onActivityResult(
    requestCode: Int,
    resultCode: Int,
    data: Intent?
) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode === 0 && resultCode === RESULT_OK) {
        ImageCropFunction()
    } else if (requestCode === 2) {
        if (data != null) {
            uri = data.data
            ImageCropFunction()
        }
    } else if (requestCode === 1) {
        if (data != null) {
            val bundle = data.extras
            val bitmap = bundle!!.getParcelable<Bitmap>("data")
            profile?.setImageBitmap(bitmap)
        }
    }

}
fun ImageCropFunction() {
    try {
       val CropIntent = Intent("com.android.camera.action.CROP")
        CropIntent.setDataAndType(uri, "image/*")
        CropIntent.putExtra("crop", "true")
        CropIntent.putExtra("outputX", 180)
        CropIntent.putExtra("outputY", 180)
        CropIntent.putExtra("aspectX", 3)
        CropIntent.putExtra("aspectY", 4)
        CropIntent.putExtra("scaleUpIfNeeded", true)
        CropIntent.putExtra("return-data", true)
        startActivityForResult(CropIntent, 1)
    } catch (e: ActivityNotFoundException) {
    }
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
    return when (item.itemId) {
        android.R.id.home -> {
            NavUtils.navigateUpFromSameTask(this)

            true
        }
        else -> super.onOptionsItemSelected(item)
    }
}
   }

Comments

Comment posted by EpicPandaForce

No idea, but I’d try sending up image directly via OkHttpClient and not necessarily through Retrofit. that helped me once

READ  [ANSWERED] (Android) How to match child ID to parent in one-to-many relationship
Powered by Inline Related Posts

Comment posted by apj123

@EpicPandaForce thanks for reverting…but i dont think it is due to network call…because it is line failed to encode the image ==>

Comment posted by shafayat hossain

In

Comment posted by apj123

here –> var bitmap: Bitmap? = null @shafayathossain

Comment posted by shafayat hossain

And where did you put bitmap value?

Comment posted by stackoverflow.com/questions/64371863/…

new question –> need help here –>

Recent Posts

  • How can I play with my cat without toys?
  • What is a bag pipe band called?
  • Are Honda Civics actually fast?
  • Are Yankee candles toxic?
  • How do I pair my Michael Kors smartwatch with my Android?

Recent Comments

No comments to show.

Archives

  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022

Categories

  • ¿Cómo
  • ¿Cuál
  • ¿Cuántas
  • ¿Cuánto
  • ¿Que
  • ¿Quién
  • 90” and 108” so you may have to round up to the nearest size.
  • and delete any Spotify folders from it. Once this is done
  • Android
  • Are
  • At
  • Bei
  • blink
  • C'est
  • Can
  • carbs
  • Comment
  • Did
  • Do
  • Does
  • During
  • For
  • Has
  • How
  • In
  • Is
  • Ist
  • Kann
  • Können
  • nouveau
  • On
  • or 108 inches.2020-08-03
  • Où
  • owning
  • Pourquoi
  • Puis-je
  • Quand
  • Quante
  • Quel
  • Quelle
  • Quelles
  • Quels
  • Qui
  • Should
  • Sind
  • Sollte
  • spiritual
  • tap the downward-facing arrow on the top left. A downward-facing arrow will appear underneath each song in the album; they'll turn green as the download completes.2020-07-28
  • Uncategorized
  • Wann
  • Warum
  • Was
  • Welche
  • Welcher
  • Welches
  • Welke
  • Wer
  • Were
  • What
  • What's
  • When
  • Where
  • Which
  • Who
  • Whose
  • Why
  • Wie
  • Will
  • Wo
  • Woher
  • you will receive two curtains each with the same measurements of width 66"" (168cm) x drop 54""(137cm).
  • you'll see a green downward-facing arrow next to each song.2021-02-26
©2023 Who Do Is | Powered by SuperbThemes & WordPress