因为soaddProperty("imgBytes",getbytePhoto)这句话webservice会把它当字符串,其实它不是,getbytePhoto是byte数组,所以你应该去掉
有两种方法,第一,把你的转成字节流,然后用post方法把字节流传到服务端,然后服务端接收到字节流之后,开启一个线程把它重新压缩成,保存在某个文件夹下面。
第二,开启一个线程,用socket直接把放到stream中传到服务端,服务端接收后保存到文件夹下。
保存一个url是个不错的方法,然后加载的时候就可以根据路径去生成一个bitmap对象,再把这个对象显示到组件上 。如果知道路径,那么显示时调用BitmapFactorydecodeFile(String pathName)这个方法就行,参数为一个路径字符串
android 将drawable中的保存到系统相册中的原理比较简单,获取到的bitmap,然后通过的compress方法写到一个fileoutputstream中 再通知MediaScannerService有文件加入就可以了
保存的核心代码如下:
Bitmap bitmap= BitmapFactorydecodeResource(getResources(), Rdrawableicon);
MediaStoreImagesMediainsertImage(contextgetContentResolver(), bitmap, name, "");
或者
FileOutputStream fos = openFileOutput("image", ContextMODE_PRIVATE);
bitmapcompress(BitmapCompressFormatJPEG, 100, fos);
fosflush();
fosclose();
//发送系统通知消息
contextsendBroadcast(new Intent(IntentACTION_MEDIA_MOUNTED, Uriparse("file://" + EnvironmentgetExternalStorageDirectory())));
另一种方法是直接使用文件流读写:
InputStream is = mContextgetResources()openRawResource(PicID);
FileOutputStream fos = new FileOutputStream(LogoFilePath);
byte[] buffer = new byte[8192];
int count = 0;
while((count=isread(buffer)) > 0)
{
foswrite(buffer, 0, count);
}
fosclose();
isclose();
这里要注意目录权限问题:在应用程序AndroidManifestxml中的manifest节点中加入android:sharedUerId="androiduidsystem"这个属性。然后放在源码环境中编译,并通过adb install 的方式进行安装。mk文件中的属性改为LOCAL_CERTIFICATE :=platform。
以上就是关于android 通过webservice上传图片到数据库全部的内容,包括:android 通过webservice上传图片到数据库、使用android上传图片到服务器,并且把图片保存到服务器的某个文件夹里、android开发: EditText中插入的相册图片如何保存在数据库里,查看的时候又如何读取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)