PDA

View Full Version : سوال: چگونگی Thumbnail کردن تصویر در دیتا گرید



mamadcity
سه شنبه 19 شهریور 1392, 13:30 عصر
سلام خدمت دوستان بنده یه جدول دارم که آدرسه عکس توش ذخیره میشه حالا می خوام اون عکس ها رو داخل دیتا گرید نشون بدم اما به صورت افقی (Thumbnail) از دوستان کسی اطلاعی داره ممنون میشم کمک کنه

R_khaleghi
سه شنبه 19 شهریور 1392, 16:55 عصر
سلام خدمت دوستان بنده یه جدول دارم که آدرسه عکس توش ذخیره میشه حالا می خوام اون عکس ها رو داخل دیتا گرید نشون بدم اما به صورت افقی (Thumbnail) از دوستان کسی اطلاعی داره ممنون میشم کمک کنه

می تونی از داخل تنظیماتش فاصله بین ردیف ها و ستون ها را شخص کنی.

mamadcity
سه شنبه 19 شهریور 1392, 22:29 عصر
من یه جدول دارم که داخلش آدرسه عکس توش ذخیره شده حالا می خوام اون عکسا رو نشونم بده حالا داخله هر کنترلی باشه مهم نیست دیتا گرید باشه یا لیست ویو و یا لیست باکس
اینم ذکر کنم که با Entity framework به دیتا وصلم دوستان اگه سمپلی دارن لطفا دریغ نکنن

R_khaleghi
سه شنبه 19 شهریور 1392, 22:37 عصر
سلام.
چرا خود عکس ها رو ذخیره نمی کنی؟
واسه لود کردنش که راحت تر هست.

mamadcity
سه شنبه 19 شهریور 1392, 22:55 عصر
سلام.
چرا خود عکس ها رو ذخیره نمی کنی؟
واسه لود کردنش که راحت تر هست.

عکس ها توسط خود برنامه آپلود میشه و آدرسش رو داخل دیتابیس ذخیره می کنه... حالا می خوام اون عکسا رو داخله یه چیزی نشون بدم

m_ali_gho
یک شنبه 24 شهریور 1392, 14:18 عصر
سلام
یه سری سورس تو CodeProject پیدا کردم که در مورد اضافه کردن عکس و رنگ به لیست یاکس و کامبو باکس هستش. ببین به کارت میاد؟

ImageListBox (http://www.codeproject.com/Articles/2369/ImageListBox-exposing-localizable-custom-object-co)
لیست باکس رنگی (http://www.codeproject.com/Articles/10193/ColorListBox)
لیست باکس با آیکن (http://www.codeproject.com/Articles/2091/ListBox-with-Icons)
کامبو باکس با تصویر (http://www.codeproject.com/Articles/5814/Where-s-the-ImageCombo-control)
Implementing an OwnerDrawn ComboBox (http://www.codeproject.com/Articles/1767/Implementing-an-OwnerDrawn-ComboBox)

doostl
یک شنبه 24 شهریور 1392, 14:27 عصر
سلام یه دیتا گرید ویو با یه ردیف بساز بعد به تعداد دلخواه ستون هایی که image اد میکنن تولید کنو ادرس عکساتو از بهشون بده به کمک کد زیر


private void button1_Click(object sender, EventArgs e)
{

DataGridViewImageColumn img = new DataGridViewImageColumn();
Image image = Image.FromFile("Image Path");
img.Image = image;
dataGridView1.Columns.Add(img);
img.HeaderText = "Image";
img.Name = "img";

}

mamadcity
یک شنبه 24 شهریور 1392, 20:45 عصر
اگه پست های بالا رو خونده باشید آدرس عکس ها داخله دیتا بیسه ... حالا من می خوام 5 تا ادرس آخرین عکس ها رو تو دیتا گرید و یا هر کنترله دیگه به صورت افقی نشون بده ... !

doostl
یک شنبه 24 شهریور 1392, 22:17 عصر
manzuretun ine dge
clmn1 clmn2 clmn3 clmn4
address1 address1 address1 address1
mage rahe hale man javab nadad?
ye grid view besazid ba 1 row baad ba codi ke goftam mituni collumn add koni (ofoghi mishe dge) baad nahayatan ham age khastdi az db address begirid az code dataGridView1.Row[0][collumn number] = address; estefade konid

mhsmity
دوشنبه 25 شهریور 1392, 01:02 صبح
و همچنان درست نشده .. دوستان خیلی واجبه کمک کنید ... این راهم که دوست مون doostl (http://barnamenevis.org/member.php?189351-doostl) گفتن نشد ...
سلام من کدهای دوست خودم رو امتحان کرد به درسی کار نمی کرد
این کدها زیر رو امتحان کنید

string fileName = Application.StartupPath + "\\Desert.jpg";
FileInfo fileInfo = new FileInfo(fileName);

byte[] binaryData = File.ReadAllBytes(fileName);
MemoryStream ms = new MemoryStream(binaryData);
Image returnImage = Image.FromStream(ms, false, true);
dataGridView1.Rows[0].Cells[0].Value = returnImage;
dataGridView1.Rows[0].Cells[0].ToolTipText = fileInfo.ToString();

mamadcity
دوشنبه 25 شهریور 1392, 14:33 عصر
سلام من کدهای دوست خودم رو امتحان کرد به درسی کار نمی کرد
این کدها زیر رو امتحان کنید

string fileName = Application.StartupPath + "\\Desert.jpg";
FileInfo fileInfo = new FileInfo(fileName);

byte[] binaryData = File.ReadAllBytes(fileName);
MemoryStream ms = new MemoryStream(binaryData);
Image returnImage = Image.FromStream(ms, false, true);
dataGridView1.Rows[0].Cells[0].Value = returnImage;
dataGridView1.Rows[0].Cells[0].ToolTipText = fileInfo.ToString();

این کده منه ولی جواب نمیده ...!

string[] ThreeLastItems = db.tbl_film.OrderByDescending(row => row.flm_id).Take(3).Select(row => row.flm_pic).ToArray();
foreach (var item in ThreeLastItems)
{
byte[] binaryData = File.ReadAllBytes(item);
MemoryStream ms = new MemoryStream(binaryData);
Image returnImage = Image.FromStream(ms, false, true);
dataGridView1.Rows[0].Cells[0].Value = returnImage;
}

mhsmity
دوشنبه 25 شهریور 1392, 22:00 عصر
این کده منه ولی جواب نمیده ...!

string[] ThreeLastItems = db.tbl_film.OrderByDescending(row => row.flm_id).Take(3).Select(row => row.flm_pic).ToArray();
foreach (var item in ThreeLastItems)
{
byte[] binaryData = File.ReadAllBytes(item);
MemoryStream ms = new MemoryStream(binaryData);
Image returnImage = Image.FromStream(ms, false, true);
dataGridView1.Rows[0].Cells[0].Value = returnImage;
}

سلام احتمالا ادرس درست نیست یا عکس مورد نظر در مسیر مورد نظر وجود نداره
اگه امکانش هست جند مقدار از متغییر item رو بزارین؟

mamadcity
سه شنبه 26 شهریور 1392, 12:41 عصر
خب من داخل Foreach یه MessageBox گذاشتم مشکلی نداشت آدرسه عکس رو دونه دونه نشون میده

مهدی رحیم زاده
چهارشنبه 27 شهریور 1392, 10:47 صبح
اگر فقط عکس قراره نمایش بدید پیشنهاد میکنم که از لیست ویو استفاده کنید . لیست ویو رو تست نکردید؟

mamadcity
چهارشنبه 27 شهریور 1392, 12:11 عصر
اگر فقط عکس قراره نمایش بدید پیشنهاد میکنم که از لیست ویو استفاده کنید . لیست ویو رو تست نکردید؟
آره فقط می خوام عکس نمایش بدم ولی متاسفانه نمی دونم چطوری باید انجام بدم

mhsmity
چهارشنبه 27 شهریور 1392, 15:11 عصر
آیا آدرس های ذخیره شده در بانک به شکل زیر در متغییر item ذخیره می شود؟
C:\\Pic\\ali.jpg

mamadcity
چهارشنبه 27 شهریور 1392, 21:26 عصر
آیا آدرس های ذخیره شده در بانک به شکل زیر در متغییر item ذخیره می شود؟
C:\\Pic\\ali.jpg
نه به این صورت ذخیره میشه چون از طریق خوده برنامه آپلود کردم تو سایت بعد آدرس عکس رو تو دیتا بیس ذخیره می کنم ...!
110908

mhsmity
پنج شنبه 28 شهریور 1392, 00:24 صبح
System.Net.WebClient myWebClient = new System.Net.WebClient();
byte[] binaryData = myWebClient.DownloadData("http://mhsmity.persiangig.com/mcatalog/Root/Heder2.jpg");
MemoryStream ms = new MemoryStream(binaryData);
Image returnImage = Image.FromStream(ms, false, true);
dataGridView1.Rows[0].Cells[0].Value = returnImage;

mamadcity
پنج شنبه 28 شهریور 1392, 02:03 صبح
System.Net.WebClient myWebClient = new System.Net.WebClient();
byte[] binaryData = myWebClient.DownloadData("http://mhsmity.persiangig.com/mcatalog/Root/Heder2.jpg");
MemoryStream ms = new MemoryStream(binaryData);
Image returnImage = Image.FromStream(ms, false, true);
dataGridView1.Rows[0].Cells[0].Value = returnImage;


یه توضیحی میدی درباره این کد من گذاشتمش تو حلقه Foreach ولی جواب نداد ..

مهدی رحیم زاده
پنج شنبه 28 شهریور 1392, 09:11 صبح
به نظر بنده استفاده از لیست ویو خیلی ساده تره . شما باید یک لیست ویو بزارید و یک کنترل که فک میکنم imagelist . الان اسمش رو درست نمیدونم . شما میتونی توی این ایمیج لیست تمامی عکس ها رو add کنی و نهایتا اون رو به لیست ویو مرتبط کنی. بعد لیست ویو عکس ها رو برای شما نشون میده.
بنده خودم چند سال پیش از این موضوع استفاده کرده بودم
اگر به نتیجه نرسیدید بفرمایید کدهاش رو براتون بزارم
موفق و پیروز باشید

mhsmity
پنج شنبه 28 شهریور 1392, 10:53 صبح
یه توضیحی میدی درباره این کد من گذاشتمش تو حلقه Foreach ولی جواب نداد ..
خوب باید تصویر مربوطه از سرور دانلود بشه و بعد به مجموعه ای از بایت ها تبدیل بشه.

mamadcity
پنج شنبه 28 شهریور 1392, 12:04 عصر
به نظر بنده استفاده از لیست ویو خیلی ساده تره . شما باید یک لیست ویو بزارید و یک کنترل که فک میکنم imagelist . الان اسمش رو درست نمیدونم . شما میتونی توی این ایمیج لیست تمامی عکس ها رو add کنی و نهایتا اون رو به لیست ویو مرتبط کنی. بعد لیست ویو عکس ها رو برای شما نشون میده.
بنده خودم چند سال پیش از این موضوع استفاده کرده بودم
اگر به نتیجه نرسیدید بفرمایید کدهاش رو براتون بزارم
موفق و پیروز باشید

ابتدا خواستم از همین راهی که شما گفتید برم ولی متاسفانه هرچی سرچ کردم به نتیجه نرسدم ...!
اگه کد بزارید ممنون میشم ...!

mamadcity
پنج شنبه 28 شهریور 1392, 18:15 عصر
به نظر بنده استفاده از لیست ویو خیلی ساده تره . شما باید یک لیست ویو بزارید و یک کنترل که فک میکنم imagelist . الان اسمش رو درست نمیدونم . شما میتونی توی این ایمیج لیست تمامی عکس ها رو add کنی و نهایتا اون رو به لیست ویو مرتبط کنی. بعد لیست ویو عکس ها رو برای شما نشون میده.
بنده خودم چند سال پیش از این موضوع استفاده کرده بودم
اگر به نتیجه نرسیدید بفرمایید کدهاش رو براتون بزارم
موفق و پیروز باشید

-----
طبق گفته ی شما ابتدا باید به یک imageList از طریق کد زیر عکس اضافه کنم :
string[] ThreeLastItems = db.tbl_film.OrderByDescending(row => row.flm_id).Take(3).Select(row => row.flm_pic).ToArray();

بعد ImageList رو به Listview وصل کنم ... لطفا اگه میشه یه کد بزاری ممنون میشم

مهدی رحیم زاده
پنج شنبه 28 شهریور 1392, 18:52 عصر
بله باید همین کار رو انجام بدید .
کد رو هم براتون ارسال میکنم در اولین فرصت .

مهدی رحیم زاده
دوشنبه 01 مهر 1392, 09:29 صبح
بابت تاخیر بسیار عذرخواهم اما متاسفانه وقتم خیلی خیلی پره
لطفا اگر ایرادی داشت بفرمایید تا حل کنم .
var dt = new DataTable();
var da = new OleDbDataAdapter(@"SELECT path FROM Table", con);
da.Fill(dt);
for (int i = 0; i < dt.Rows.Count; i++)
{
Image img = Image.FromFile(dt.Rows[i]["path"].ToString());
imageList1.Images.Add(img);
listView1.Items.Add("", i);
}

mamadcity
دوشنبه 01 مهر 1392, 14:19 عصر
بابت تاخیر بسیار عذرخواهم اما متاسفانه وقتم خیلی خیلی پره
لطفا اگر ایرادی داشت بفرمایید تا حل کنم .
var dt = new DataTable();
var da = new OleDbDataAdapter(@"SELECT path FROM Table", con);
da.Fill(dt);
for (int i = 0; i < dt.Rows.Count; i++)
{
Image img = Image.FromFile(dt.Rows[i]["path"].ToString());
imageList1.Images.Add(img);
listView1.Items.Add("", i);
}
من آدرس سه عکس آخر که تو دیتابیس هست رو از طریق Entity Framework با کد زیر بیرون می کشم :
string[] ThreeLastItems = db.tbl_film.OrderByDescending(row => row.flm_id).Take(3).Select(row => row.flm_pic).ToArray();


حالا موندم اینو چطوری توی اون کدی که شما گذاشتین استفاده کنم