PDA

View Full Version : سوال: خواندن عکس از دیتابیس و نمایش آن در image



omely35
چهارشنبه 17 شهریور 1389, 04:51 صبح
با سلام خدمت دوستان
من این کدها را برای خواندن عکس از دیتابیس و نمایش دادن عکس استفاده میکنم ولی مشکل اینه که میخواستم بدونم میشه عکس رو در Image نمایش بدم تا بتونم در زیر همون صفحه که TextBox و Button قرار داره عکس نمایش داده بشه و در هنگام نمایش عکس TextBox و Button هم نمایش داده بشه.



MemoryStream stream = new MemoryStream();
SqlConnection connection = new SqlConnection();
try
{
connection.Open ();
SqlCommand command = new SqlCommand ();
command.Connection = connection;
command.CommandText=string.Format("select gimage from goods where gid ='{0}'",Convert.ToInt32( txtgid.Text));
byte[] image = (byte[]) command.ExecuteScalar ();
stream.Write (image, 0, image.Length);
Bitmap bitmap = new Bitmap (stream);
Response.ContentType = "image/gif";
bitmap.Save (Response.OutputStream, ImageFormat.Gif);
}
finally
{
connection.Close ();
stream.Close ();
}

kebriya
چهارشنبه 17 شهریور 1389, 09:39 صبح
لینک زیرو ببین
http://www.barnamenevis.org/forum/showthread.php?p=1091539&posted=1#post1091539

persian_bigboy
چهارشنبه 17 شهریور 1389, 23:19 عصر
دوست من یک سوال ؟؟؟؟ چرا عکس رو تو دیتابیس ذخیره کردی ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟/
این غیر فنی هستش و کار بسیار آماتوری

mrshcom
چهارشنبه 17 شهریور 1389, 23:51 عصر
دوست من یک سوال ؟؟؟؟ چرا عکس رو تو دیتابیس ذخیره کردی ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟/
این غیر فنی هستش و کار بسیار آماتوری

بله به نظر بنده هم اينكار درست نيست بهتره آدرس عكس رو در ديتا بيس ذخيره كني هر وقت خواستي آدرس رو برميداره و عكس رو نمايش ميده بهمين سادگي... .

omely35
پنج شنبه 18 شهریور 1389, 01:17 صبح
با سلام
ببینید دوستان ( persian_bigboy ، mrshcom ) من به دلیل یک سری مسایل امنیتی، خواسته های مدیر پروژه و ... ترجیح دادم که عکس ها را در دیتابیس ذخیره کنم بگذریم از این که شاید فنی نباشه.

در هر صورت این کد العان جواب میده فقط مشکل اینجاست که میخوام در هنگام نمایش عکس در فرم Textbox و Button هم نمایش داده بشه آیا امکان پذیر هست ؟

ضمنادوست عزیز ( kebriya ) من http://www.barnamenevis.org/forum/showthread.php?p=1091539&posted=1#post1091539 را هم سرزدم ( هر چند قبل از زدن این تاپیک دیده بودم ) ولی چیزی دستگیرم نشده چون در اون کد هم( http://ir-dotnet.blogfa.com/cat-1.aspx )هنگام نمایش عکس هیچ یک از کنترل های فرم نمایش داده نمیشه و فقط عکس خالی نمایش داده میشه.
(با تشکر و احترام)

احمد سامعی
پنج شنبه 18 شهریور 1389, 01:37 صبح
نه خیر روش استفاده شما اشتباه هست

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

البته همین کار با یک صفحه با پسوند aspx هم می تونی انجام بدی که ساده تر هست

نفهمیدی بگو تا کد بدم

omely35
پنج شنبه 18 شهریور 1389, 03:07 صبح
نه خیر روش استفاده شما اشتباه هست
با سلام
من نمیدونم منظورتون از روش اشتباه چیه شما بگید تا من اصلاحش کنم.

احمد سامعی
پنج شنبه 18 شهریور 1389, 19:13 عصر
منظورم اینکه شما نمی تونید عکسی که به این روش از دیتابیس یا هر جایی واکشی می کنید مستقیم در صفحه نمایش بدید، همانطور که در بالا اشاره کردم باید این کار توسط یک صفحه واسط انجام بشه و لینک اون صفحه به کنترل ایمج شما پاس داده بشه

persian_bigboy
پنج شنبه 18 شهریور 1389, 20:06 عصر
سلام دوست من ،
اشتباه یعنی اینکه
1- تا زمانی که عکس از دیتابیس دانلود و نمایش داده بشه ، کانکشن همیشه باز هست
2- حجم SQL بالارفته و سرعتش پایین میاد
3- از منابع سرور خیلی استفاده نادرست میکنی
4- اگر دنبال امنیت هستی فایلهای عکس رو شما باید کلید رمز کن و در زمان بازیابی به صورت StreamOnline رمز نگاری کن و نمایش بده . این خیلی منطقی هستش نه اینکه شما بخاطر امنیت سرور رو فدا کنی . من اگر مدیر پروژه بودم اصلا چنین فکری رو هم نمی کردم .

omely35
جمعه 19 شهریور 1389, 02:54 صبح
با سلام

شما نمی تونید عکسی که به این روش از دیتابیس یا هر جایی واکشی می کنید مستقیم در صفحه نمایش بدید،
من دنبال همین بودم متشکرم .



نه اینکه شما بخاطر امنیت سرور رو فدا کنی . من اگر مدیر پروژه بودم اصلا چنین فکری رو هم نمی کردم

منم همین طور . ولی در حین انجام یک پروژه گروهی نمیشه از این صحبتها کرد چون سناریو ، تحلیل ،اکثر کلاسها ، توابع و ... از قبل آماده یا در حین انجام شدنه.:عصبانی++:

omely35
جمعه 19 شهریور 1389, 07:19 صبح
با عرض ادب و احترام
دوستان سلام بالاخره مشکل این کد با کمک شما ها درست شد.
متشکرم
اینم سورس کدش

khorsandreza
جمعه 19 شهریور 1389, 07:45 صبح
دوست من یک سوال ؟؟؟؟ چرا عکس رو تو دیتابیس ذخیره کردی ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟/
این غیر فنی هستش و کار بسیار آماتوری
این نظر شما غیر قابل قبول برای اینکه در یک سایتی که با امور پرسنلی سر و کار دارد و افراد زیادی مرتبط است مثل داوطلبان دانشگاه ، اداره پاسپورت و ... اینها تصاویر را در داخل دیتابیس قرار داده میشود شما نمیتوانید مثلا یک میلیون تصویر را در یک پوشه قرار داهید یک سایتی خودم با هاش مرتبط هستم بیش از 150000 نفر سرپرست و میانگین هر نفر سه تحت پوشش دارد و که میشود در مجموع حدودا بیش از ششصد هزار تصویر که تمامی تصاویر را داخل دیتابیس قرار داده شده و این امار هر ماه در حال افزایش است

mammadkoma
دوشنبه 29 شهریور 1389, 12:09 عصر
یک فایل Generic Handler به پروژه اضافه کن و imageURL کنترل image را مثلا قرار بده:

imgLaptop.ImageUrl = "~/AdminParts/ShowImage.ashx?id=" + SelectedID;

یک نمونه هم از کد داخل فایل Handler :

<%@WebHandlerLanguage="C#‎"Class="ShowImage" %>
using System;
using System.Configuration;
using System.Web;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Drawing.Imaging;
publicclassShowImage : IHttpHandler
{
publicvoid ProcessRequest(HttpContext context)
{
Products.MapLaptops ml = new Products.MapLaptops();
if (ml.GetModelsPic(context.Request.QueryString["id"]))
{
System.IO.MemoryStream Mstream = new System.IO.MemoryStream(ml.Image);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(Mstream, true);
bmp.Save(context.Response.OutputStream,ImageFormat .Jpeg);
}
}
publicbool IsReusable
{
get
{
returnfalse;
}
}
}

در این فایل یه کوئری می زنیم (ml.GetModelsPic) که ID عکسو بهش می دیم. بعد با یه مموری استریم اون آرایه بایتی را می ریزیم توی Bitmap .
و با Response بر می گردونیم به لینکی که فایل را صدا زده.

rasoul2669
چهارشنبه 15 شهریور 1391, 18:53 عصر
با سلام
میشه بگید از چه روش دیگه ای استفاده کنیم که این مشکلات را نداشته باشه؟ آخه اگه فقط آدرس عکس رو ذخیره کنم وقتی کاربر مسیر عکس رو تغییر بده دیگه اون عکس رو از دست میدیم

faeze abbasi
پنج شنبه 23 خرداد 1392, 02:18 صبح
salam dustaan
mishe javaabe dustemun ro bedin ,in mored ro man ham moshkel daram

khorsandreza
پنج شنبه 23 خرداد 1392, 10:55 صبح
salam dustaan
mishe javaabe dustemun ro bedin ,in mored ro man ham moshkel daram

سلام
اولا فارسی بنویس لکنت گرفتیم تا این متن را بخوانیم
دوما یک مثال ساده براتون آماده کردم دانلود کنید
امیدوارم نیازتان برآورده شود