D'économie d'image Bitmap d'un Fichier - Xamarin, Monodroid
Je suis en train d'enregistrer une image bitmap à un répertoire (galerie) à l'intérieur de mon téléphone. L'application est en cours d'élaboration dans Xamarin sorte que le code est en C#.
Je ne peux pas semblent comprendre comment faire un répertoire, et enregistrer une image Bitmap. Des suggestions?
public void createBitmap(View view){
view.DrawingCacheEnabled = true;
view.BuildDrawingCache (true);
Bitmap m_Bitmap = view.GetDrawingCache(true);
String storagePath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
Java.IO.File storageDirectory = new Java.IO.File(storagePath);
//storageDirectory.mkdirs ();
//save the bitmap
//MemoryStream stream = new MemoryStream ();
//m_Bitmap.Compress (Bitmap.CompressFormat.Png, 100, stream);
//stream.Close();
try{
String filePath = storageDirectory.ToString() + "APPNAME.png";
FileOutputStream fos = new FileOutputStream (filePath);
BufferedOutputStream bos = new BufferedOutputStream(fos);
m_Bitmap.Compress (Bitmap.CompressFormat.Png, 100, bos);
bos.Flush();
bos.Close();
} catch (Java.IO.FileNotFoundException e) {
System.Console.WriteLine ("FILENOTFOUND");
} catch (Java.IO.IOException e) {
System.Console.WriteLine ("IOEXCEPTION");
}
OriginalL'auteur Coova | 2014-09-22
Vous devez vous connecter pour publier un commentaire.
C'est ici un slim moyen d'exporter un
Bitmap
commePNG
-fichier de la carte sd en utilisant uniquementC#
trucs:Je ne sais pas si c'est possible. Désolé.
Vous devez libérer de la vapeur et de l'image à partir de la mémoire à l'aide de ".Dispose()" ou il peut être préférable d'utiliser "utilisation de la(){}".
quand je compresse, je suis de perdre la qualité de l'image. est-il un moyen de l'enregistrer sans passer à cette compresse fonction? Aussi, le post @test a montré que des spectacles pour le convertir au tableau d'octets en la passant à la compression de la fonction.
Avez-vous essayé
CopyPixelsToBuffer()
? Ici c'est un post à ce sujet.OriginalL'auteur kaolick
Changement:
:
Votre code original ajoute le nom de fichier pour le dernier dossier dans le chemin d'accès de nom sans l'ajout d'un séparateur de chemin. Par exemple, le chemin de
\data\data\sdcard01
serait de créer un chemin d'accès au fichier de\data\data\sdcard01APPNAME.png
. À l'aide dePath.Combine()
assure qu'un séparateur de chemin d'accès est utilisé lors de l'ajout de répertoires.OriginalL'auteur matthewrdev