ورود

View Full Version : طریقه گرفتن عکس از وب سرویس



slr560
یک شنبه 11 آبان 1393, 16:27 عصر
سلام دوستان
توی یکی از پروژه هام نیاز دارم که یه عکس با حداکثر حجم ۱۰۰ کیلوبایت دانلود بشه و توی imageView نمایش داده بشه
میخواستم روند کار رو بدونم و بفهمم چطوری عکس از طریق یک وب سرویس ASP ارسال میشه و اینطرف سمت اندروید گرفته میشه؟؟؟؟
از چه کلاس هایی و چه توابعی استفاده میشه
ممنون

harani
یک شنبه 11 آبان 1393, 18:25 عصر
شما اصلاً لازم نیست عکس تونو تو دیتابیس وب تون ذخیره کنین . شما عکسا رو یه جا آپلود کنید بعد آدرس لینک دانلود مستقیمشو بریزین تو دیتابیس وب تون بعدشم تو اندروید فقط با دستور کافی آدرس و بگیرن سپس توسط Url Conection عکس مربوطه را دانلود کنید بعدم که دانلود شد عکس بریز توی sdcard به همین راحتی .

slr560
یک شنبه 11 آبان 1393, 18:28 عصر
شما اصلاً لازم نیست عکس تونو تو دیتابیس وب تون ذخیره کنین . شما عکسا رو یه جا آپلود کنید بعد آدرس لینک دانلود مستقیمشو بریزین تو دیتابیس وب تون بعدشم تو اندروید فقط با دستور کافی آدرس و بگیرن سپس توسط Url Conection عکس مربوطه را دانلود کنید بعدم که دانلود شد عکس بریز توی sdcard به همین راحتی .


خب سمت دیتابیس دست من نیست دوست عزیز
عکسها داخل دیتابیس SQL هست. من باید از طریق وب سرویس بگیرمشون

harani
یک شنبه 11 آبان 1393, 20:19 عصر
اگه که اینطوری یا به شخصی که دیتابیس دستش بگو لینک مستقیمشو بهت بده . یا اینکه عکسا اگه عکسا رو به شکل blob ذخیره کرده بصورت باینری base64 بگیر . و نشون بده سرچ کن زیاد شده از این مباحث

slr560
یک شنبه 11 آبان 1393, 20:34 عصر
اگه که اینطوری یا به شخصی که دیتابیس دستش بگو لینک مستقیمشو بهت بده . یا اینکه عکسا اگه عکسا رو به شکل blob ذخیره کرده بصورت باینری base64 بگیر . و نشون بده سرچ کن زیاد شده از این مباحث

همینو میخواستم بدونم. طرف SQL هم عکسا به صورت blob ذخیره میشه؟ فک کنم از این راه باید برم

harani
یک شنبه 11 آبان 1393, 21:02 عصر
این راه زیاد بصرفه نیست چرا که چنتا مشکل داره داده هایی که به صورت باینری و در نهایت string در میاد 100% خود داده نیست بلکه به نوعی تبدیل شده است حالا مشکل ماجرا مثلاً کجا شدت میگره اینکه قاطی کاراکترها اعداد فارسی باشه اونوقت بی هیچ وجه نمیتونید درخواست رو ببینی مگر با یه سری کدنویسی تصحیحش کنی راستش یه مقاله رو در مورد base64 مطالعه میکردم گفته بود حتی شکل باینری 1.2 تا 1.6 حجم رو اضافه تر میکنم نمیدونم درست یا ن ولی اگه بتونی عکسا رو لینک مستقیم بدی که عالی ولی اگه راهی نداری با همین base64 برو دیگه .

pbm_soy
دوشنبه 12 آبان 1393, 00:23 صبح
اونطوری که فهمیدم شما به سمت سرور دسترسی ندارید و فقط به وب سرویس دارید و از خروجیهای آن باید استفاده کنید پس باید از ا.نطرف بپرسید که چه درخواستی برای وب سرویس باید بفرستید تا تصویر را به شما بدهد؟ و حتی میتوانید بپرسید که تصویر را به چه روشی برای کلاینت فرستاده میشود؟ بعد می توانید به ادامه بحث بپردازیم!

چون منظور شما را نگرفتم احتمال دیگه ای هم وجود دارد اونم اینکه شما به سرور دسترسی دارید ولی فقط تصاویر از قبل تو دیتابیس موجود است در این حالت یا باید مستقیم به دیتابیس وصل شوید و یا روی سرور یک وب سرویس بنویسید که واسط کلاینت و دیتابیس شود! در این حالت با هردرخواستی که از کلاینت به وب سرویس میرسد شما تصاویر را از دیتابیس واکشی کنید و آنرا در یکی از فولدرهای هاست کپی یا ایجاد کنید و سپس لینک آنرا به کلاینت بفرستید دیگه از اینجا به بعد یک لینک ساده است و فکر می کنم مشکلی نداشته باشید

android2015
دوشنبه 12 آبان 1393, 01:51 صبح
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;

public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}

protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
BMP_Dllll = mIcon11;
task1Finished = true;

} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;

}

protected void onPostExecute(Bitmap BMP_Dllll, Context context) {
//BMP_Dl = result;
}
}




روش قرار دادن عکس در ImageView:



private static Bitmap BMP_Dllll = null;
public static boolean task1Finished = false;





ImageView picture = new ImageView(context);

task1Finished = false;
String Img_Address_String = "http://www.site.ir/img.jpg";
try {
new DownloadImageTask((ImageView) picture)
.execute(Img_Address_String);

} catch (Exception e) {
// TODO: handle exception
}


while( task1Finished == false )
{
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}

ImageView Img_Viewer = (ImageView)findViewById(R.id.img_Viewer);
Img_Viewer.setImageBitmap(BMP_Dllll);

pbm_soy
چهارشنبه 14 آبان 1393, 00:54 صبح
سلام دوستان
توی یکی از پروژه هام نیاز دارم که یه عکس با حداکثر حجم ۱۰۰ کیلوبایت دانلود بشه و توی imageView نمایش داده بشه
میخواستم روند کار رو بدونم و بفهمم چطوری عکس از طریق یک وب سرویس ASP ارسال میشه و اینطرف سمت اندروید گرفته میشه؟؟؟؟
از چه کلاس هایی و چه توابعی استفاده میشه
ممنون

ای کاش میگفتید به نتیجه رسیدید؟ آیا جوابتون را اینجا گرفتید؟ یا خودتون چه روشی را در پیش گرفتید؟

slr560
چهارشنبه 14 آبان 1393, 06:36 صبح
ای کاش میگفتید به نتیجه رسیدید؟ آیا جوابتون را اینجا گرفتید؟ یا خودتون چه روشی را در پیش گرفتید؟

هنوز پیاده سازی نکردیم
ولی به صورت لینک دانلود میکنیم