Autore Topic: Salvare image con _  (Letto 828 volte)

Offline paul78

  • Utente normale
  • ***
  • Post: 353
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Salvare image con _
« il: 01 Febbraio 2016, 18:58:06 CET »
0
Ciao a tutti!

Ho creato un'app. dove le persone possono salvare le immagini nel database ma ho un piccolo problemino, in pratica quando salvo il nome dell'immagine inserisco il nome + numero casuale.

Però mi è capitato che alcuni utente hanno scritto il nome distaccato!

Ad esempio se un utente scrive come nome "pippo pluto" mi salva "pippo pluto 1234.JPEG"

io lo vorrei salvare così: "pippo_pluto1234.JPEG" cioè nel momento del salvataggio se l'app. dovesse trovare un nome distaccato automaticamente mi inserisce _ tra i nomi.

Spero di essere stato chiaro....

Come faccio?
tutti possiamo programmare...basta volerlo!!!

Offline maverik1408

  • Utente junior
  • **
  • Post: 99
  • Respect: +1
    • Mostra profilo
    • MaverikApps
  • Dispositivo Android:
    NEXUS 5
  • Play Store ID:
    Maverik
Re:Salvare image con _
« Risposta #1 il: 01 Febbraio 2016, 19:33:03 CET »
0
Con una replace della stringa? Troppo semplice?
Maverik @ Google Play Store

Offline paul78

  • Utente normale
  • ***
  • Post: 353
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:Salvare image con _
« Risposta #2 il: 01 Febbraio 2016, 20:49:51 CET »
0
il replace  serve per unire 2 stringhe.

a me è solo una stringa!

Ti faccio un esempio:

String nomeString = "pippo pluto"

ora questa stringa la vorrei fa diventare tutta unita! cioè "pippopluto"

come faccio?

Post unito: 01 Febbraio 2016, 21:38:17 CET
risolto in questo modo:

String s1 = nomeString.replaceAll("\\s", "");

in questo modo cancella gli spazi esistenti!!

grazie mille! :-D
« Ultima modifica: 01 Febbraio 2016, 21:38:17 CET da paul78, Reason: Merged DoublePost »
tutti possiamo programmare...basta volerlo!!!

Offline xixietto

Re:Salvare image con _
« Risposta #3 il: 20 Febbraio 2016, 16:30:46 CET »
0
ciao, posso chiederti come hai fatto a far prendere l'immagine e salvarla nel db per fvr?

Offline paul78

  • Utente normale
  • ***
  • Post: 353
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:Salvare image con _
« Risposta #4 il: 20 Febbraio 2016, 22:04:36 CET »
0
io, per semplificare il codice, prima trasferisco via ftp l'immagine in una cartella già predefinita poi catturo il nome dell'immagine che ho trasferito in modo tale da salvarlo in una tabella solo come varchar, cioè solo il nome dell'immagine.

Per essere più semplici ti illustro a modo mio passo dopo passo.

per prima cosa creiamo un file "upload_file.php" da inserire nella gestione dei file, questo il codice:

Codice (Java): [Seleziona]
<?php
    $nome_image = $_POST["nome_file"];
        $image = $_POST["image"];
       
        $decodedImage = base64_decode("$image");
        file_put_contents("nome_cartella/".$nome_image.".JPG", $decodedImage);
?>

penso che fino quì sia semplice da capire.

ora andiamo nel codice java :-D

primo passo:

Codice (Java): [Seleziona]
case R.id.image_write:
                Intent intentOpenImage = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(intentOpenImage, RESULT_LOAD_IMAGE);
                break;

secondo passo:

Codice (Java): [Seleziona]
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode== RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data!= null) {
                Uri selectedImage = data.getData();
                img_upload.setImageURI(selectedImage);
               
                String path = selectedImage.getPath();
                File file = new File(path);
                imageName = file.getName();
                String nome = nomeString.replaceAll("\\s", "");
                stringImage  =nome + imageName;
                               
        }
    }

terzo passo:

Codice (Java): [Seleziona]
Bitmap image = ((BitmapDrawable) imageview.getDrawable()).getBitmap();                  
new uploadImage(image, stringImage).execute();

quarto passo:

Codice (Java): [Seleziona]
private class uploadImage extends AsyncTask<Void, Void, Void> {

           Bitmap image;
           String name;
           
           public uploadImage(Bitmap image, String name) {
                   this.image = image;
                   this.name = name;
           }
           @Override
           protected Void doInBackground(Void... params) {
                   ByteArrayOutputStream  byteArrayOutputStream = new ByteArrayOutputStream();
                   image.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
                   String encodeImage = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
                   
                   ArrayList<NameValuePair> dataToSend = new ArrayList<NameValuePair>();
                   dataToSend.add(new BasicNameValuePair("image", encodeImage));
                   dataToSend.add(new BasicNameValuePair("nome_file", name));
                   
                   HttpParams httpRequestParams = getHttpRequestParams();
                   
                   HttpClient httpClient = new DefaultHttpClient(httpRequestParams);
                   HttpPost httpPost = new HttpPost("http://www.tuosito.com/"+ "upload_file.php");
                   
                   try {
                         httpPost.setEntity(new UrlEncodedFormEntity(dataToSend));
                         httpClient.execute(httpPost);
                         
                           
                   }catch(Exception ex) {
                           ex.printStackTrace();
                   }
                   return null;
           }
           
           @Override
           protected void onPostExecute(Void aVoid) {
                   super.onPostExecute(aVoid);
                   //Toast.makeText(getApplicationContext(), "Image Uploaded",Toast.LENGTH_LONG).show();
           }

     }
     
     private HttpParams getHttpRequestParams() {
        HttpParams httpRequestParams =  new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpRequestParams, 1000*30);
        HttpConnectionParams.setSoTimeout(httpRequestParams, 1000*30);
                return httpRequestParams;
     }

In questo modo carico il file nella cartella predefinita e nella colonna della tabella inserisco solo il nome del file che sarebbe nel mio caso "stringImage".

Spero di essere stato chiaro, purtroppo non sono molto bravo a spiegare la programmazione :-P.

Aspetto tue notizie!
tutti possiamo programmare...basta volerlo!!!

Offline dev91

  • Utente junior
  • **
  • Post: 51
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Note 4
Re:Salvare image con _
« Risposta #5 il: 21 Febbraio 2016, 02:04:20 CET »
0
Forse avrai già provato con:

Codice (Java): [Seleziona]
String nome = nomeString.replaceAll("\s", "");
con un solo "\" piuttosto che con due..

Offline xixietto

Re:Salvare image con _
« Risposta #6 il: 23 Febbraio 2016, 15:51:31 CET »
0
Posso chiederti perché usi il protocollo FTP? Non prendi semplicemente l'immagine da galleria e copi nella cartella?(cosa che dovrei fare io)

Inviato dal mio GT-I9505 utilizzando Tapatalk


Offline paul78

  • Utente normale
  • ***
  • Post: 353
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:Salvare image con _
« Risposta #7 il: 23 Febbraio 2016, 22:46:43 CET »
0
Ciao uso il protocollo ftp per semplificare e rendere il database più veloce!

Per caricare il file image nella cartella predefinita, scrivo questo codice:

Codice (Java): [Seleziona]
private class uploadImage extends AsyncTask<Void, Void, Void> {

           Bitmap image;
           String name;
           
           public uploadImage(Bitmap image, String name) {
                   this.image = image;
                   this.name = name;
           }
           @Override
           protected Void doInBackground(Void... params) {
                   ByteArrayOutputStream  byteArrayOutputStream = new ByteArrayOutputStream();
                   image.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
                   String encodeImage = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);
                   
                   ArrayList<NameValuePair> dataToSend = new ArrayList<NameValuePair>();
                   dataToSend.add(new BasicNameValuePair("image", encodeImage));
                   dataToSend.add(new BasicNameValuePair("nome_file", name));
                   
                   HttpParams httpRequestParams = getHttpRequestParams();
                   
                   HttpClient httpClient = new DefaultHttpClient(httpRequestParams);
                   HttpPost httpPost = new HttpPost("http://www.tuosito.com/"+ "upload_file.php");
                   
                   try {
                         httpPost.setEntity(new UrlEncodedFormEntity(dataToSend));
                         httpClient.execute(httpPost);
                         
                           
                   }catch(Exception ex) {
                           ex.printStackTrace();
                   }
                   return null;
           }
           
           @Override
           protected void onPostExecute(Void aVoid) {
                   super.onPostExecute(aVoid);
                   //Toast.makeText(getApplicationContext(), "Image Uploaded",Toast.LENGTH_LONG).show();
           }

     }
     
     private HttpParams getHttpRequestParams() {
        HttpParams httpRequestParams =  new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpRequestParams, 1000*30);
        HttpConnectionParams.setSoTimeout(httpRequestParams, 1000*30);
                return httpRequestParams;
     }

trasformando l'immagine in stringa, secondo il mio punto di vista rende il db pesante! mentre in questo modo lo rendo più veloce!
« Ultima modifica: 23 Febbraio 2016, 22:48:17 CET da paul78 »
tutti possiamo programmare...basta volerlo!!!

Offline xixietto

Re:Salvare image con _
« Risposta #8 il: 23 Febbraio 2016, 23:52:12 CET »
0
A già è una buona idea! Ma nel mio caso essendo che prendo un immagine da galleria sai indirizzarmi?

Inviato dal mio GT-I9505 utilizzando Tapatalk


Offline paul78

  • Utente normale
  • ***
  • Post: 353
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:Salvare image con _
« Risposta #9 il: 24 Febbraio 2016, 23:32:37 CET »
0
questo è un semplice esempio che estrae tutti i file d'immagine da una semplice cartella di un sdcard che potresti utilizzare anche da un ftp.

nel layout scrivi questo:

Codice (Java): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
        <com.scrollimages.MyHorizontalLayout
            android:id="@+id/mygallery"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            />
    </HorizontalScrollView>

</LinearLayout>

in java scrivi questo:

Codice (Java): [Seleziona]
import java.util.ArrayList;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.AttributeSet;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class MyHorizontalLayout extends LinearLayout {
 
 Context myContext;
 ArrayList<String> itemList = new ArrayList<String>();

 public MyHorizontalLayout(Context context) {
  super(context);
  myContext = context;
 }

 public MyHorizontalLayout(Context context, AttributeSet attrs) {
  super(context, attrs);
  myContext = context;
 }

 public MyHorizontalLayout(Context context, AttributeSet attrs,
   int defStyle) {
  super(context, attrs, defStyle);
  myContext = context;
 }
 
 void add(String path){
  int newIdx = itemList.size();
  itemList.add(path);
  addView(getImageView(newIdx));
 }
 
 ImageView getImageView(int i){
  Bitmap bm = null;
  if (i < itemList.size()){
   bm = decodeSampledBitmapFromUri(itemList.get(i), 220, 220);
  }
 
  ImageView imageView = new ImageView(myContext);
     imageView.setLayoutParams(new LayoutParams(220, 220));
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
     imageView.setImageBitmap(bm);

  return imageView;
 }
 
 public Bitmap decodeSampledBitmapFromUri(String path, int reqWidth, int reqHeight) {
     Bitmap bm = null;
     
     // First decode with inJustDecodeBounds=true to check dimensions
     final BitmapFactory.Options options = new BitmapFactory.Options();
     options.inJustDecodeBounds = true;
     BitmapFactory.decodeFile(path, options);
     
     // Calculate inSampleSize
     options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
     
     // Decode bitmap with inSampleSize set
     options.inJustDecodeBounds = false;
     bm = BitmapFactory.decodeFile(path, options);
     
     return bm;  
    }
   
    public int calculateInSampleSize(
     
     BitmapFactory.Options options, int reqWidth, int reqHeight) {
     // Raw height and width of image
     final int height = options.outHeight;
     final int width = options.outWidth;
     int inSampleSize = 1;
       
     if (height > reqHeight || width > reqWidth) {
      if (width > height) {
       inSampleSize = Math.round((float)height / (float)reqHeight);  
      } else {
       inSampleSize = Math.round((float)width / (float)reqWidth);  
      }  
     }
     
     return inSampleSize;  
    }
 
}

e poi nel Main questo:

Codice (Java): [Seleziona]
import java.io.File;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.widget.Toast;

public class MainActivity extends Activity {

 MyHorizontalLayout myHorizontalLayout;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        myHorizontalLayout = (MyHorizontalLayout)findViewById(R.id.mygallery);
       
        String ExternalStorageDirectoryPath = Environment.getExternalStorageDirectory().getAbsolutePath();
       
        String targetPath = ExternalStorageDirectoryPath + "/Images/";
       
        Toast.makeText(getApplicationContext(), targetPath, Toast.LENGTH_LONG).show();
        File targetDirector = new File(targetPath);
                 
        File[] files = targetDirector.listFiles();
        for (File file : files){
         myHorizontalLayout.add(file.getAbsolutePath());
        }    
    }
   
}

Fammi sapere!
tutti possiamo programmare...basta volerlo!!!

Offline xixietto

Re:Salvare image con _
« Risposta #10 il: 08 Agosto 2016, 21:53:35 CEST »
0
Ho un problema.. In pratica io visualizzo l immagine presa in una imageview.. Però succede che.. Se l'immagine è inferiore al Mb , funziona tutto correttamente.. Se è superiore non me la visualizza.. Sai aiutarmi?

Inviato dal mio GT-I9505 utilizzando Tapatalk