C# Resim Kaydetme

Arkadaşlar Merhaba


Şöyle bir ekranım var kitap bilgilerini kaydediyorum.
En sona resim eklemek istiyorum. Bilgileri veritabanına kaydedip,veritabanından datagridviewe aktarmam lazım
Lakin veritabanı olarak SQL kullanılmıyor. Veritabanı olarak biraz komik olabilir ama text dosyası kullanıyorum

Yuklediim bu resimleri ve onlara bağlı pdfleri ise bu ekranda göstermek istiyorum

Takıldığım konu;Yükleyeceğim fotoğrafı screenshot olarak kaydedip ona göremi çekeceğim. Teşekkür ederim şimdiden

Bundan kasit nedir?
Cunku screenshot bir kayit etme bicimi degil, icerik.


Resmin icerigini database’de tutmak bir yontem, dosya ismini tutmak baska bir yontem. Dosya ismini ID gibi database kaydina ozel bir veriyle ayni yapip DB’de hic bir sey tutmamak da ucuncu bir yontem.

Merhaba;

Resimler nerede?

Komik değil gayet ihtiyaca göre tercih edilebilecek bir metod.

Resimleri nereye yükledik?

Bu da bizi tekrar resimler nerede konusuna tekrar götürür.

Bir resim kaynağınız olmalı. Bu resimleri nereden alacağınıza karar vermelisiniz. Sonrasında imagelist içerisine eklersiniz.

Resimleri, pdf üzerinden çekecekseniz, önce pdf ilk kapak sayfasını görüntüleyip, onu bir yerlerden görüntü haline getirmeniz gerekir. Ama sorunun soruluş şeklinden götüntüyü nasıl elde edeceğiniz konusunda tereddütlerim var.

Dönelim;

Elimizde resimler var ve datagrid’e yerleştireceğiz o kolay.

How to add ImageList to the DataGridView coloumn - CodeProject

Bir image liste yerleştirdi iseniz, onu datagride aktarmak için bir kaç yöntem. Sorularım konuyu anlamak üzerine çok oldu ise kusuruma bakmayınız.

EDIT1:

Bir pdf dosyosından görüntü almak için bakılabilecek bir makale;

Extracting pages from a PDF document and saving them as separate image files, C# edition - The Old New Thing (microsoft.com)

üstad merhaba
söylediklerinizi anladım şimdi deneyeceğim

Şöyle;
Resim yükle yerinden (openfiledialog) aracılığıyla resmi seçtim.
Bu resmi bir klasöre şu kod ile

            pBoxResim.Image.Save(string.Format("KitapResimleri/{0}", txtResimAdi.Text));

Kaydettim

Klasörüm;

Bu arada kitap adı,kitap yazarı ayrı bir text dosyasına kaydettim
pdfleride aynı bir klasöre kaydettim

Burda ilişki kurmammı gerekiyor yani
Datagridviewe hepsini çekmem lazım

Ardından başka bir ekranda yukardaki ikinci fotoğrafta yüklediğim bu resmi ve pdf dosyasını otomatik olarak oraya kaydetsin istiyorum

pdf’den resim çekme gibi bir şey kullanmayacağım

imageliste eklersem ve programı kapatıp yeniden çalıştıırırsam (imagelisti runtime gibi birşeyde çalıştıracağım için soruyorum) kaydettiğim resimleri yeniden görebilir miyim?

Şimdi imagelist bu resimleri bir yerden alıyor değil mi? Ondan kaynak sormuştum. Evet bir yerlerde alıyorsa çalıştırırken imagelist’inizi bu kaynaktan açılışta tekrar yükleyecek bir yordam kodlayabilirsiniz.

Yani bu resimler bir klasörde duruyor. Siz de programı çalıştırdınız, ilk yapacağınız şey o klasördeki resimleri imageliste runtime yüklemek.

Ha bu dosyalar elinizde yok imagelist ile elinizde bir resim listeniz var.

.net - How to Export Images from an Image List in VS2005? - Stack Overflow

Gibi bir yöntemle klasörün birine kapanışta aktarırsanız. Artık bir klasörde resimleriniz olacaktır.

Daha marjinal bir yöntem, exe dosyanız içerisinde resource olarak saklamak, fakat bu yöntemde çalışan programınızı modifiye ettiğiniz için antivirüs programları bu davranışları virüs olarak algılayabilir.

En basiti, kodunuz çalışmayı bitirdiğinde yada belirli aralıklarla imagelist içeriğinizi bir klasöre export etmek. Sonra program çalıştırılırken de tekrar import etmek. Bunu bir veri tabanı kullanmak istemediğiniz varsayımı ile yapıyoruz.

Sonuçta bir veri tabanı da resimleri data file olarka tutacak. .bmp veya başka formatta tuttuğunuz dosya da size bir görsel veri olacaktır.

Teşekkür ederim hocam katkıların için

Şöyle bir senaryo yapabilirsiniz.
1- txt dosyasında satır satır base64 verisi olarak resimleri tutun
kaydet, bul, değiştir metodları ile bir algoritma geliştirin.
2- pdf leri klasöre örnek olarak 1.pdf, 2.pdf şeklinde kaydeden bir metod geliştirin.
bu sizin basit anlamda işinizi görecektir.

Ben olsam sqlite bir veritabanı içerisine resimleri ve pdfleri binary formata dönüştürüp kaydederim ve indexine göre datagrid vasıtası ile okurum.
Dilerseniz vaktim olduğunda bu tür bir proıje yazabilirim ufak çaplı.
Saygılarımla.

hocam yapabilirsen cok sevinirim

sqlite değilde klasörde yapabilir misiniz?

Sqlite zaten bir klasor icersinde olacak.
Tatil sonrası size kucuk bir proje hazirlayacagim.
Saygilarimla.

Teşekkürler hocam sağolasın