Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to save image through capturing in android to php?

We have tried this code for android and php. Please see below code.

Android

Scn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                        // Open default camera
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

                // start the image capture Intent
                startActivityForResult(intent, 100);
            }
 }
  protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
            if (requestCode == 100 && resultCode == RESULT_OK) {


                 selectedImage = intent.getData();
                    imageBitmap = (Bitmap) intent.getExtras().get("data");

                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                imageBitmap.compress(Bitmap.CompressFormat.JPEG, 40, baos);

                imageView1.setImageBitmap(imageBitmap);

                byte[] imageBytes = baos.toByteArray();
                String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);

               submitData(encodedImage);         
           }
}

public void submitData(final  String encodedImage) {
        try {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        //Looper.prepare();
                        Log.d("looper", "-->>>>");
                        try 
                        {
                            isAuthorized = isAuthenticated(encodedImage);
                        } 
                        catch (Exception e) 
                        {
                            Log.e("Exception ==> ", e.toString());  
                        }
                        MHandler.post(new Runnable() {
                            @Override
                            public void run() {
                                try {
                                    if(isAuthorized){
                                        if(AuthenticationResultJSONObject!=null){
                                            String message = AuthenticationResultJSONObject.getString("message");

                                            if(AuthenticationResultJSONObject.getString("status").equalsIgnoreCase("1"))
                                            {
                                                Toast.makeText(ScannerActivity.this,message,Toast.LENGTH_SHORT).show();
                                            }
                                            else if (AuthenticationResultJSONObject.getString("status").equalsIgnoreCase("0"))
                                            {
                                                Toast.makeText(ScannerActivity.this,message,Toast.LENGTH_SHORT).show();
                                            }
                                        }
                                    }
                                    else
                                    {
                                        Toast.makeText(ScannerActivity.this, "Loing unsuccessfull, please try again !", Toast.LENGTH_SHORT).show();
                                    }
                                } 
                                catch (Exception e) 
                                {
                                    e.printStackTrace();
                                    Log.e("Exception 146==> ", e.toString());  
                                }
                                finally 
                                {

                                    //progressdialog.dismiss();
                                    //progress.dismissProgressDialog();
                                }
                            }
                        });
                    } catch (Exception e) {
                        Log.e("Exception 153==> ", e.toString());  
                    }
                }
            }).start();

        } catch (Exception e) {
            Log.e("Exception 159==> ", e.toString());  
        }
    }
    public boolean isAuthenticated(final  String encodedImage) 
    {
        isAuthorized = false;
        String encoder1 = "";
        final String url="http://bestpeopleservice.com/projects/scanner/api/api/api.php?class=login&method=login_data&json=";


        String finalurl = "{\"data\":{\"qr_code\":\""+username1+"\",\"user_pass\":\""+password1+"\",\"longitude\":\""+longitude1+"\",\"latitude\":\""+latitude1+"\",\"adderss\":\""+adderss1+"\",\"images\":\""+encodedImage+"\"}}";//
        Log.v("267 1111111", "done url -> "+url+finalurl);

        try {
            encoder1 = URLEncoder
                    .encode(finalurl,"UTF-8");
            Log.v("267 222", "done url 2 -> "+url+encoder1);
        } 
        catch (UnsupportedEncodingException e1)
        {
            e1.printStackTrace();
        }
                try {

                    if (isNetworkConnected()) {

                        AuthenticationResultJSONObject = new JSONObject(doFetchDataFromWebService_Simple_OnlyJSONResponse(url+encoder1));    

                        Log.v("Online", "User json array    ===  "+AuthenticationResultJSONObject);  

                    }else{

                        Toast.makeText(ScannerActivity.this, "Please check your internet connection and try again.", Toast.LENGTH_SHORT).show();

                    }
                }
                catch(Exception e){ 
                    e.getMessage();
                }
                finally{
                    if(AuthenticationResultJSONObject!=null){
                        isAuthorized = true;
                    }
                    else
                    {
                        isAuthorized=false;
                    }
                }
        //  }
    //  });
        return isAuthorized;
    }

    // Checking the internet connection
    public boolean isNetworkConnected() {
        ConnectivityManager connectivitymanagar = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkinfo = connectivitymanagar.getActiveNetworkInfo();
        if (networkinfo == null || !networkinfo.isConnectedOrConnecting()) {
            return false;
        } else {
            return true;
        }
    }



    public String doFetchDataFromWebService_Simple_OnlyJSONResponse(
            String WebServiceURL) {

        String responseBody = "";
        JSONObject jobj = new JSONObject();
        try {
            HttpGet WSHttpPost = null;
            HttpClient WSHttpClient = null;
            HttpResponse WSHttpResponse = null;

            WSHttpClient = getNewHttpClient();
            WSHttpPost = new HttpGet(WebServiceURL);
            WSHttpResponse = WSHttpClient.execute(WSHttpPost);

            Log.d("resp", ""+WSHttpResponse);
            //responseBody = EntityUtils.toString(WSHttpResponse.getEntity());
            responseBody = EntityUtils.toString(WSHttpResponse.getEntity(), "UTF-8");


            Log.v("response1", "" + responseBody);

        } catch (Exception e) {
            Log.e("Exception2 ==> ", e.toString());
        }
        if (responseBody == null || responseBody.equalsIgnoreCase("null")) {
            return "";
        } else {
            return responseBody;
        }
    }

    public HttpClient getNewHttpClient() {
        try {
            KeyStore trustStore = KeyStore.getInstance(KeyStore
                    .getDefaultType());
            trustStore.load(null, null);

            SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
            sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

            HttpParams params = new BasicHttpParams();
            HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
            HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

            SchemeRegistry registry = new SchemeRegistry();
            registry.register(new Scheme("http", PlainSocketFactory
                    .getSocketFactory(), 80));
            registry.register(new Scheme("https", sf, 443));

            ClientConnectionManager ccm = new ThreadSafeClientConnManager(
                    params, registry);

            return new DefaultHttpClient(ccm, params);
        } catch (Exception e) {
            return new DefaultHttpClient();
        }
    }

    public class MySSLSocketFactory extends SSLSocketFactory {
        SSLContext sslContext = SSLContext.getInstance("TLS");

        public MySSLSocketFactory(KeyStore truststore)
                throws NoSuchAlgorithmException, KeyManagementException,
                KeyStoreException, UnrecoverableKeyException {
            super(truststore);

            TrustManager tm = new X509TrustManager() {
                public void checkClientTrusted(X509Certificate[] chain,
                        String authType) throws CertificateException {
                }

                public void checkServerTrusted(X509Certificate[] chain,
                        String authType) throws CertificateException {
                }

                public X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
            };

            sslContext.init(null, new TrustManager[] { tm }, null);
        }

        @Override
        public Socket createSocket(Socket socket, String host, int port,
                boolean autoClose) throws IOException, UnknownHostException {
            return sslContext.getSocketFactory().createSocket(socket, host,
                    port, autoClose);
        }

        @Override
        public Socket createSocket() throws IOException {
            return sslContext.getSocketFactory().createSocket();
        }
}

It returns parsing bytestring. Its value is too much long.

PHP

 $base=$Data['images'];
 $binary=base64_decode($base);
 header('Content-Type: bitmaps; charset=utf-8');
 header("Content-Length: " . mb_strlen($base, '8bit'));
 $file = fopen('qr_code.jpeg', 'wb');
 fwrite($file, $binary);
 fclose($file);
 echo 'Image upload complete!!, Please check your php file directory';

Above code is working. But it have some issue. Image save successfully in folder but image will be displayed as corrupted. How can we resolve this issue.

Thanks in advance.

like image 509
krutssss Avatar asked Sep 30 '22 04:09

krutssss


1 Answers

Please try this code this code working for me.

<?php

// Path to move uploaded files
$target_path = "uploads/";

// array for final json respone
$response = array();

// getting server ip address
$server_ip = gethostbyname(gethostname());

// final file url that is being uploaded
$file_upload_url = 'http://' . $server_ip . '/' . '/xyz/' . '/' . $target_path;


if (isset($_FILES['image']['name'])) {
    $target_path = $target_path . basename($_FILES['image']['name']);

    // reading other post parameters
    $email = isset($_POST['email']) ? $_POST['email'] : '';
    $website = isset($_POST['website']) ? $_POST['website'] : '';

    $response['file_name'] = basename($_FILES['image']['name']);
    $response['email'] = $email;
    $response['website'] = $website;

    try {
        // Throws exception incase file is not being moved
        if (!move_uploaded_file($_FILES['image']['tmp_name'], $target_path)) {
            // make error flag true
            $response['error'] = true;
            $response['message'] = 'Could not move the file!';
        }

        // File successfully uploaded
        $response['message'] = 'File uploaded successfully!';
        $response['error'] = false;
        $response['file_path'] = $file_upload_url . basename($_FILES['image']['name']);
    } catch (Exception $e) {
        // Exception occurred. Make error flag true
        $response['error'] = true;
        $response['message'] = $e->getMessage();
    }
} else {
    // File parameter is missing
    $response['error'] = true;
    $response['message'] = 'Not received any file!F';
}

// Echo final json response to client
echo json_encode($response);
?>
like image 85
samarth Avatar answered Oct 02 '22 14:10

samarth