1 ضمیمه
نمایش عکس موجود در فیلد datagridview
با سلام
برای نمایش عکس داخل database راهنمایی کنید لطفا؟
چطوری با دابل کلیک روی فیلد عکس در datagridview عکس ذخیر شده در دیتابیس بصورت تمام صفحه با برنامه پیش فرض ویندوز(potoshop یا paint یا Windows Photo Viewer یا ....) نمایش داده بشه؟
چون می خواهم با نمایش عکس با برنامه مورد نظر امکان نمایش با قابلیت زوم، پرینت، اصلاح و ذخیره فراهم شود
البته تاپیک زیر نزدیک به این موضوع بود اما نتوانست به من کمک کند
https://barnamenevis.org/showthread.php?278878-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%B9%DA%A9%D8%B3-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-%D8%A8%D8%A7%D9%86%DA%A9-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%DB%8C-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-Window-Photo-Viewer&highlight=%D8%B9%DA%A9%D8%B3+%D8%AF%D8%B1+W indows+Photo+Viewer
ممنون
ضمیمه 146518
نقل قول: نمایش عکس موجود در فیلد datagridview
در مورد سوال دومتون
if (e.RowIndex != -1)
{
if (e.ColumnIndex == dgv1.Columns["FileName"].Index)
{
if (File.Exists("مسیر عکس"))
{
System.Diagnostics.Process.Start("مسیر عکس");
}
else
{
MessageBox.Show("متاسفانه فایل موجود نمیباشد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
اینو تو تابع سل کلیک دیتا گریدتون بنویسید.
البته در این روش منظور از فایل نیم مسیر ذخیره شده تو دیتا بیس هست. که باید مسیر عکس رو هم نگه بدارید.
برا سوال اولتون هم دوتا کار میتونید بکنید که مسیر عکس رو تو دیتا بیس ذخیره کنی و موقع نمایش از کد بالا برا دیدنش استفاده کنی
نقل قول: نمایش عکس موجود در فیلد datagridview
ممنون از راهنمای شما
دستورات شما درست است
ولی هدف من نمایش عکسی هست که داخل دیتابیس بصورت بایت ذخیره شده و داخل سیستم ذخیره نشده که مسیر عکس وجود داشته باشد
آیا راه حلی وجود ندارد که بتوان این کار را انجام داد؟
البته براساس راهنمای شما میشه ابتدا عکس از دیتابیس خواند بعد داخل سیستم در یک مسیر پیش فرض ذخیره اش کرد بعد با استفاده از دستورات شما و بااستفاده از ان مسیر پیش فرض عکس را باز کرد
اما این سرعت برنامه را پایین میاورد
باید راه حلی وجود داشته باشد که بصورت مستقیم عکس نمایش داد؟
نقل قول: نمایش عکس موجود در فیلد datagridview
از این متد جهت تبدیل آرایه ای از بایت ها به Image استفاده کن
public static Image ByteArrayToImage(byte[] byteArrayIn)
{
var ms = new MemoryStream(byteArrayIn);
var returnImage = Image.FromStream(ms);
return returnImage;
}
نقل قول: نمایش عکس موجود در فیلد datagridview
ممنون از پاسخ شما
یعنی در دستور System.Diagnostics.Process.Start("مسیر عکس");
بجای مسیر عکس این متد فراخوانی کنم؟
نقل قول: نمایش عکس موجود در فیلد datagridview
اگر تمایل داری که Image Viewer ویندوز جهت نمایش تصویر استفاده کنی قبل از فراخوانی متد Process.Start تصویری که از آرایه بایت ها بدست اوردی در جایی ثابت کنار فایل اجرای بایک نام مشخص(تمام تصاویر با یک نام مشخص و Override شود) ذخیره کن سپس آدرس فایل ذخیره شده تصویر + نام آنرا بجای "مسیر عکس" بنویس
راه دیگر نمایش تصویر اینه که یک فرم اضافه کن و روی فرم یک PictureBox اضافه کن سپس براحتی تصویر خروجی که ازنوع Image هست رو پاس بده به فرم و در خاصیت PictureBox.Image مقدار دهی کن
نقل قول: نمایش عکس موجود در فیلد datagridview
نقل قول:
نوشته شده توسط
mohsennajafeihodk
ممنون از راهنمای شما
دستورات شما درست است
ولی هدف من نمایش عکسی هست که داخل دیتابیس بصورت بایت ذخیره شده و داخل سیستم ذخیره نشده که مسیر عکس وجود داشته باشد
آیا راه حلی وجود ندارد که بتوان این کار را انجام داد؟
البته براساس راهنمای شما میشه ابتدا عکس از دیتابیس خواند بعد داخل سیستم در یک مسیر پیش فرض ذخیره اش کرد بعد با استفاده از دستورات شما و بااستفاده از ان مسیر پیش فرض عکس را باز کرد
اما این سرعت برنامه را پایین میاورد
باید راه حلی وجود داشته باشد که بصورت مستقیم عکس نمایش داد؟
بهر حال برای نمایش فایل توسط یه برنامه دیگه باید اون فایل یه جایی وجود داشته باشه. چون اون برنامه نمایشگر عکس با برنامه شما که ارتباط نداره یه استریمی یا هرچیزی از عکس رو بهش فرستاد. پس قبل نمایش عکس رو ذخیره کرده و بعد نمایشش بدید