resim yazdırma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

resim yazdırma

Mesaj gönderen nitro »

merhabalar,
harddiskte olan bir resim dosyasını kesinlikle hiçbir forma almadan yazdırmak istiyorum. yani resmi bir image nesnesine loadfromfile yapmadan ya da herhangi bir raporlama aracına almadan (quickreport, fastreport vs.) direk yazıcıya göndermek istiyorum.
mümkünmüdür? nasıl olur?
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Bir programcı böyle sorular sormamalı.

- Bu soruyu Sohbet bölümünde şöyle sorabilirsin. "Bir resim düzenleme / gösterme programını söyler misiniz ?Batch operasyon ile parametre ile resim dosyasının adını vericem o da direkt yazıcıya gönderecek... "

- Cevap şöyle bir program veya benzerini kullanabilirsin http://www.outsmartsoftware.com/batch-p ... image.html
Resim
Resim ....Resim
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Re: resim yazdırma

Mesaj gönderen ikutluay »

nitro yazdı:merhabalar,
harddiskte olan bir resim dosyasını kesinlikle hiçbir forma almadan yazdırmak istiyorum. yani resmi bir image nesnesine loadfromfile yapmadan ya da herhangi bir raporlama aracına almadan (quickreport, fastreport vs.) direk yazıcıya göndermek istiyorum.
mümkünmüdür? nasıl olur?
irfanview yada xnview in komut satırı parametreleri ile mümkündür.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

soru yanlış anlaşıldı sanırım. ben bunu yapan bir program aramıyorum. bir delphi programında kod ile yazdırmak istiyorum. düşünün ki program seri bir şekilde harddiske resim kaydediyor, bu resimleri raporlama aracı ile ya da form.print gibi komutlarla yazdırma olayında sıkıntı var. (çok uzun hikaye) bunu yapabilen bir api vardır sanırım.
örnek vereyim: mesele cdrom açma olayı olsa. ben cdromu nasıl açarım diye sormuyorum, cdromu kod ile açmak istiyorum.
umarım anlatabilmişimdir.
emek veren herkese çok teşekkürler.
saygılarımla
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Yani istiyorsun ki bir resim dosyasının adını ve yolunu vereyim, windows bunu direkt yazıcıya yollasın. Üzgünüz bu işi kendin yapmalısın.

- illaki de resmi bir kere programına alacaksın. İşin kolayını istiyorsan başka yazılımdan göndereceksin. Örnekler verildi.
Resim
Resim ....Resim
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

ShellExecute apisinin bu işi yapabildiğini hatırlıyorum hafızam beni yanıltmıyorsa...
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

nitro yazdı:soru yanlış anlaşıldı sanırım. ben bunu yapan bir program aramıyorum. bir delphi programında kod ile yazdırmak istiyorum. düşünün ki program seri bir şekilde harddiske resim kaydediyor, bu resimleri raporlama aracı ile ya da form.print gibi komutlarla yazdırma olayında sıkıntı var. (çok uzun hikaye) bunu yapabilen bir api vardır sanırım.
örnek vereyim: mesele cdrom açma olayı olsa. ben cdromu nasıl açarım diye sormuyorum, cdromu kod ile açmak istiyorum.
umarım anlatabilmişimdir.
emek veren herkese çok teşekkürler.
saygılarımla
resimleri formda görüntüledikten sonra yazdırmanın sakıncalarını buradaki sıkıntıları anlatırsan bizide aydınlatırsın ancak

daha önce açtığım çeşitli kod ipuçları isimli threadde yazıyı doğrudan kullanmak ve resim yazdırmakla ilgili bir kaç kod vardı. arama yapıp incelemeni öneririm.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

Mesele iyice yokuşa sürülmüş.Arkadaşım yapacağın iş illa resim görünmeyecek diyorsan...image nesnesinin visible özelliğini false yap..sonra şu kodları dene...

Kod: Tümünü seç

procedure TForm1.resim_yazdir;
var ADevice,ADriver,APort:PChar;
  ADeviceMode:THandle;
  PrinterVar:Boolean;
  Rect:TRect;
begin
Rect.Top:=0;
Rect.Left:=0;
Rect.Right:=Image1.Picture.Graphic.Width;
Rect.Bottom:=Image1.Picture.Graphic.Height;
PrinterVar:=True;
try
  Printer.GetPrinter(ADevice,ADriver,APort,ADeviceMode);
except
  PrinterVar:=False;
end;
if PrinterVar then
  begin
   Printer.BeginDoc;
   try
    Printer.Canvas.StretchDraw(Rect,Image1.Picture.Graphic);
    Printer.EndDoc;
   except
    Printer.Abort;
    raise;
   end;
  end else showmessage('Default printer tanimli degil!');
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@Battosai

- Cevap hakkı doğuyor. Muhataplardan biri de ben olduğuma göre yokuşa sürenlerin başında da ben geliyorum demektir. Eğer aradığı cevap buysa ne ala... :shock:

- @nitro aramasını bilmiyor mu, bu kodu ve nicesini bulamayacak mı ? Bu kadar makale yazıldı çizildi.

- Şimdi şuna cevap ver, PNG, TIFF, JPG, GIF, PNG hatta daha ileri gideyim aşağıdaki uzantılı resimlerim var ve TImage nesnesine yükleyemiyorum dese ?!

Kod: Tümünü seç

TIF - Image format 
TIFF - Image format 
JPG - Image format 
JPEG - Image format 
GIF - Image format 
BMP - Image format 
CUT - Image format 
ICO - Image format 
LBM - Image format 
JNG - Image format 
COA - Image format 
MNG - Image format 
PBM - Image format 
PCD - Image format 
PCX - Image format 
PGM - Image format 
PNG - Image format 
PPM - Image format 
PSD - Image format 
RAS - Image format 
TGA - Image format 
WBMP - Image format 
XBM - Image format 
XPM - Image format 
- Uzun lafın kısası cevap yazarken bin kere düşünüp bir kere yazıyoruz. Maksat yokuşa süremek değil, aynı kodları binlerce kere yazmamak.
Resim
Resim ....Resim
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

Nitro bi denesin bakalım Bende printer olmadığı için denemedim.Ayrıca hele image'in desteklediği uzantıları print etsin gerisine bi çare bulunur.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

Battosai yazdı:Nitro bi denesin bakalım Bende printer olmadığı için denemedim.Ayrıca hele image'in desteklediği uzantıları print etsin gerisine bi çare bulunur.
iyide üstad nitro acemi bir programcı değil. visile:=false olayını heralde düşünmüştür
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

sorunu daha detaylı yazmak istiyorum olay şu. bir form var, zemini beyaz, üzerinde birkaç label ve titleları, satır-sütun çizgileri yok edilmiş bir datagrid var. bu formu nokta vuruşlu yazıcıdan yazdırmak istiyorum. raporlama araçları kullanınca yazıcı istediğim yerde durmuyor. yazdıracağım belge 9 santim boyunda ama xp yazıcının a4 kadar sarmasını sağlıyor. konuya çok farklı çözümler denedim. yazıcıya veriyi text olarak göndermeyi de denedim ama istediğim yerde durmadı. sonuçta bir milimetre bile fazla ilerletse 20 belge yazdırdıktan sonra 2 santim yazılar kaymış olur. ki bu program arka arkaya 200-300 belge yazdırmak için yapıldı.
yazıcı sunucu özelliklerinden xpde lazım olan kağıt boyutunu girdim. formu hazırladım ve form.print dedim. sorunsuz yazdırdı. olayı dngü içine koydum. formdaki veriler değiştikçe form.print ile yazıcıya gönderdim. bir ya da 2 tane düzgün yazdırıyor sonra formun boyutlarınca her yeri karalıyor. yazıcıya sanki simsiyah bir resim göndermişsiniz gibi düşünün. bi de bunu yazdıran nokta vuruşlu yazıcının yazdırdığını düşünürseniz cazırtıdan sinir krizi geirmemek mümkün değil.
kendi kendime dedim ki "döngü içinde form tam olarak oluşturulamıyor, o nedenle yazıcıya simsiyah sayfa gidiyor" araya sleep ile bekleme koydum nafile. form.refresh, form.repaint gibi kodlar koydum nafile. döngüden çıkarı bi butona koydum butona tıkladıkça labellar ve grid içeriği değiştirilip yazıcıya gönderiliyordu. nafile. farklı yazıcılar denedim (kxp-1150, epson lx300, oki 520) nafile. farklı bilgisayarda denedim nafile.
döngüyü tier'a bağladım nafile.
en son dedim ki formu resim olarak kaydetsem de ara ara yazıcıya gödersem olur belki. o da olmuyomuş. mrmarman hocam öyle dedi. forma almam saçma olur çünkü zaten form.print ile gönderdiğim çıktılar bazen doğru yazdırıyor bazen yanlış yazdırıyor.
işte durum bu sayın hocalarım.
ben mesajlarda yokuşa sürme diye bi şey algılamadım. zahmet edip cevap yazarken bastığınız her tuş için Allah razı olsun. Sonuçta burası hiç kimsenin hiçbir zorumluluğu olmadan iyi niyet için yardımlarını esirgemedii bir forum. konuyu anlatabildiysem ne mutlu. anlamak isteyen varsa anlaşılmayan kısımlarını daha detaylı yazarım.
saygılarımla
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Daha profesyonel bir çözüm var ama bir unit kullanmak gerek bunun için ve bir test çıktısı alınmalı o nedenle kestirme yolu öneriyorum, printer.canvas metodunu kullanarak kısa ve stabil çözümü üretebilirsin fakat 3-4 kağıt telef etmeyi göze alacaksın, ki anladığım kadarıyla daha fazlasını telef etmişsin :)

Kolay gele.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

faruk printer.canvas olayı hiç aklıma gelmemişti. şimdi deneme imkanım yok ama yarın ilk işim bu olayı denemek olacak. teşekkürler. neticeyi ben bu topic altına yazarım. kolay gelsin.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

1. özel kağıt boyutu tanımla.. bunu nasıl yapacağın konusunda google da arama yapmalısın.

2. kendi kağıdını noktasına virgülüne ölçüp bu boyutu doğrula. (logoda milimetrenin onda 2 si kadar bir kayma bizim tüm defteri kebiri katlediyordu az daha)

3. kendi formundan raw olarak yazıcıya yazdır. ancak yazıcı sürücüsü olarak imb graphic sec. dot matrix nasıl olsa bu sürücü ilede yazar
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Cevapla