Xamarin.android - 将 .jpg 复制到共享文件夹
Xamarin.android - Copy .jpg to shared folder
我正在使用 Samba 文件服务器将文件从我的 Android 设备复制到 Windows 上的共享文件夹。对于 .txt 文件,我没有任何问题,工作正常,但我试图将 .jpg 文件复制到共享文件夹中,但失败了。我从互联网上搜索了很多代码,但有人解决了我的问题。
图片我复制过来了,打开的时候损坏了
有人有示例代码吗?
我的代码是这样的:
Java.IO.File mfile = new Java.IO.File(item.FullName);
var mSharedFolderCalidad = new SmbFile(AppGlobalConfigSoftware.Instance.Parameters.PathToDownloadCalidad + item.Name);
//If exists don't create another time
if (!mSharedFolderCalidad.Exists())
mSharedFolderCalidad.CreateNewFile();
InputStream inFile = new FileInputStream(mfile);
SmbFileOutputStream sfos = new SmbFileOutputStream(mSharedFolderCalidad);
byte[] buf = new byte[1024];
int len;
while ((len = inFile.Read(buf)) > 0)
{
sfos.Write(buf, 0, len);
}
inFile.Close();
sfos.Close();
感谢所有帮助。
谢谢。
您可以使用 nuget 中的 Media.Plugin 先拍照。
var file = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
{
PhotoSize = PhotoSize.Medium,
});
public byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[16*1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
MediaFile
有 GetStream().
您可以将其用于 Stream,然后将其转换为 byte[]。这是一种方法:
定义流
Stream imageStream;
拍照后初始化它。
imageStream = file.GetStream();
var imageArr= ReadFully(imageStream );
然后将其写入您的文件夹。
我正在使用 Samba 文件服务器将文件从我的 Android 设备复制到 Windows 上的共享文件夹。对于 .txt 文件,我没有任何问题,工作正常,但我试图将 .jpg 文件复制到共享文件夹中,但失败了。我从互联网上搜索了很多代码,但有人解决了我的问题。 图片我复制过来了,打开的时候损坏了
有人有示例代码吗?
我的代码是这样的:
Java.IO.File mfile = new Java.IO.File(item.FullName);
var mSharedFolderCalidad = new SmbFile(AppGlobalConfigSoftware.Instance.Parameters.PathToDownloadCalidad + item.Name);
//If exists don't create another time
if (!mSharedFolderCalidad.Exists())
mSharedFolderCalidad.CreateNewFile();
InputStream inFile = new FileInputStream(mfile);
SmbFileOutputStream sfos = new SmbFileOutputStream(mSharedFolderCalidad);
byte[] buf = new byte[1024];
int len;
while ((len = inFile.Read(buf)) > 0)
{
sfos.Write(buf, 0, len);
}
inFile.Close();
sfos.Close();
感谢所有帮助。
谢谢。
您可以使用 nuget 中的 Media.Plugin 先拍照。
var file = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
{
PhotoSize = PhotoSize.Medium,
});
public byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[16*1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
MediaFile
有 GetStream().
您可以将其用于 Stream,然后将其转换为 byte[]。这是一种方法:
定义流
Stream imageStream;
拍照后初始化它。
imageStream = file.GetStream();
var imageArr= ReadFully(imageStream );
然后将其写入您的文件夹。