Bilder drucken ? Druckqualität sehr schlecht, warum ?



  • Hi,

    ich muss eine anwendung schreiben in die ich verschiedene grafiken lade.
    die bilder sind 86 pixel breit und 94 pixel hoch, sprich knapp 2,4 cm breit.
    da es sich um sehr kleine bilder handelt muss die qualität also absolut topp sein. die grafiker haben ein solches bild in einer auflösung von 300pixeln abgespeichert. wenn ich nun aber das kleine bild von dennen auf mein formular lade ist es rießen groß und wenn ich die width und height einstellungen auf die obige größe verändere kann man darauf nichts mehr erkennen. desweiteren müssen die bilder ja nicht nur am bildschirm richtig dargestellt werden, sie sollen auch in einer guten qualität gedruckt werden. kann ich das überhaupt mit einer normalen form erreichen ??? brauch ich für meine anwendungen ihrgenwelche speziellen komponenten oder wie soll ich das ganze anstellen ????

    danke schonmal im voraus!

    gruß
    binary



  • In welcher größe willste das denn überhaupt drucken?



  • Also so wie ich die Grafiker verstanden habe ist das Problem das:

    Das Bild hat eine Auflösung von 300 dpi.
    Die Bildschirmdarstellung vom PC ist aber nur 72 dpi.
    Der Drucker selbst hat 300 dpi.

    Ok, wenn ich nun das Bild mit einer Auflösung von 300 dpi auf meinen Monitor sprich auf meiner Form anbringe wird es auf denn Monitor größer dargestellt als in Wirklichkeit (wie wenn ich es z.b. drucke).

    Wenn ich nun aber meine Bilder alle auf die Form ziehe und sage Form1->Print() druckt macht er mir mehr oder weniger einen Screenshot von der Anwenung und druckt dies in der falschen Größe. Ich dachte erst das dies mit der einstellung in Form1->PixelPerInch = 300 zu lösen ist aber da lag ich wohl falsch 😞

    Ich möchte also in der Größe der Orginaldatei sprich 96 x 84 drucken und dies in einer Druckqualität von 300 dpi. Perfekt wäre es natürlich wenn ich das am Bildschirm so angezeigt bekomme wie es dann auf denn gedruckten Blatt aussehen würde.

    Ich hoffe du weist was ich meine 🙂
    Bin selber nicht so fit was das ganze Grafikzeugs angeht ...



  • binary trust schrieb:

    Das Bild hat eine Auflösung von 300 dpi.
    Die Bildschirmdarstellung vom PC ist aber nur 72 dpi.
    Der Drucker selbst hat 300 dpi.

    binary,
    das ganze Thema Auflösung und Drucken ist ein höchst unerquickliches - soviel im voraus. Eine wichtige Frage lautet: Was zum Henker meinen die Grafiker mit 300 dpi?
    Antwort: Wenn Du ein Ausgabegerät mit einer Auflösung von exakt 300 dpi (dots per inch - also 300 Punkte auf 2.54 cm) hast, wird das Bild in optimaler Qualität dargestellt.
    Der dpi-Wert des Monitors ist "undefiniert", weil einfach jeder Monitor eine etwas andere Größe hat. Das heißt, die 72 dpi sind auch nur eine grobe Schätzung. Aber in jedem Fall sind die 72 dpi natürlich viel weniger. Das Bild auf dem Monitor muß also herunterskaliert werden und sieht dann in Abhängigkeit von der Grafik-Routine, die das Bild skaliert, gut oder schlecht aus.
    Also Du hast imho zwei Möglichkeiten:

    1. eine Komponente/Routine finden, die vernünftig skaliert
    2. eine verkleinerte Version jedes Bildes für die Darstellung am Monitor von Deinen Grafikern anfordern

    Wenn ich nun aber meine Bilder alle auf die Form ziehe und sage Form1->Print() druckt macht er mir mehr oder weniger einen Screenshot ...

    Genau.
    Du solltest daher besser die Canvas-Property des Printer()-Objektes verwenden. Die Funktion StretchDraw könnte Dein Freund sein. Das macht natürlich mehr Arbeit.

    Ich möchte also in der Größe der Orginaldatei sprich 96 x 84 drucken und dies in einer Druckqualität von 300 dpi.

    Das würde bedeuten, daß Du 0.81 cm große Bilder ausdruckst. Bist Du sicher, daß das stimmt?



  • Du solltest daher besser die Canvas-Property des Printer()-Objektes verwenden. Die Funktion StretchDraw könnte Dein Freund sein. Das macht natürlich mehr

    Ok wie stell ich das ganze jetzt an ?
    als grundlage sehe ich eine form1 mit weisen hintergrund auf die ich n bilder in der größe 2,4 cm lade.

    nun möchte ich diese seite drucken alaa deines vorschlages.
    wie muss ich das jetzt anstellen ?



  • binary trust:
    Verwarnung wegen thematischem Doppelposting!
    Faustregel: Eine Frage pro Thread/ein Thread pro Thema.

    Ganz zu schweigen von der Unart, eventuelle Antworten/Vorschläge zu ignorieren.



  • Erwischt und Bestraft 🙂
    Tut mir auch leid, aber die voherige Frage war ja etwas anders formuliert,
    um es dem Forum entsprechend zu beschreiben könnte man sagen das ich eine Instanz der Basisklasse Bildschirm drucken auf das Forum Borland C++ Builder vererbt habe 😉

    Nun mal im ernst, hab mir gerade in meinen geliebten C++ Buch zu denn Thema Print Klasse unter VCL etwas reingezogen und muss sagen das ich ersthaft etwas erschrocken bin! das problem ist ja nun das das ich nicht nur text aber auch nicht nur grafik drucken möchte mein programm erzeugt nach auswahl einiger kriterien aus einer datenbank ein fenster in dem text sowie auch n grafische elemente stehen. ich hab das ganze so positioniert das es auf eine dina4 seite passen müsste aber wie ich jetzt ja erfahren habe bringt mir die anweisung form1->print kein glück 😞

    aber auch der weg des eingen druckprogramms scheint mir etwas umständlich.
    wenn jemand eine komponente bekannt sein sollte oder ein einfacher weg wäre ich immernoch sehr dankbar!

    und nochmals sorry wegen denn doppelposting, ist halt so das ich ein richtiger cpp nebie bin, ein projekt bis 1 dez fertig haben muss und eigentlich aus einer ganz anderen richtung (php/webdesign) komme ....

    thx
    binary



  • binary trust schrieb:

    nicht nur grafik drucken möchte mein programm erzeugt nach auswahl einiger kriterien aus einer datenbank ein fenster in dem text sowie auch n grafische elemente stehen.

    Das Ausdrucken von Schrift ist weitaus unangenehmer als das Drucken von Grafik, da sich Schrift-Fonts nämlich nicht stufenlos skalieren lassen ...
    Du fängst gerade an, sowas wie eine kleine Textverarbeitung samt Ausdruck zu programmieren. In dem Fall würde ich mich eher auf die Suche nach einer passenden Komponente machen. Da bist Du letztlich viel schneller (und billiger).



  • oh mein gott in welches gebiet hab ich mich da nur gewagt!
    sagmal wie steht das ganze denn mit QuickReport ? Ist da was zu machen ?
    Oder ist gar eine solche Komponente auf der Borland Companions Tools druff ???



  • Hi binary trust,

    Ich hab ein kleines Tool zur Anzeige beliebiger Graphikdateien in 'beliebiger' Skalierung. Das koennte ich Dir mailen

    Da drin ist ne Komponente zum Drucken mit Vorschau - das Drucken mach ich direct auf Canvas vom printer.

    Falls das Deinen Wünschen entspricht, kann ich Dir mit etwas Code fuer Printer->Canvas- Ausgabe helfen.

    PS: Hast Du BCB 4.0???
    Wenn nicht, muss ich Dir die Borlandbibliotheken mit mailen (3.5 MB!) (Oder ich muss Standalone daraus machen)



  • ja, das wäre schon ne super sache wenn du mir das mailen könntest.
    ich hab allerdings denn bcb 6 prof, bin ja leider erst seit knapp 2-3 monaten an cpp 😞

    meine mail ist frapsoft@{NOSPAM}gmx.de

    ich bin mir zwar noch nicht ganz im klaren wie ich das problem löse, ob ich es als html exportiere und dann drucke, oder ob ich mit printer programmiere oder ob es da eine fertige komponente gibt ....

    also, wäre dir wirklich über infos sehr sehr dankbar!!!

    gruß
    binary



  • Mail kommt!!!!!

    PS:
    Ich mach 2 Mails:
    1. Programm- Exe
    2. Bibliotheken!

    Das muss alles in einen Ordner!



  • hi,

    hab leider keine mail erhalten.
    dir ist schon klar das das {NOSPAM} rausmuss 😃 ???



  • binary trust schrieb:

    ich bin mir zwar noch nicht ganz im klaren wie ich das problem löse, ob ich es als html exportiere und dann drucke, oder ob ich mit printer programmiere oder ob es da eine fertige komponente gibt ....

    binary,
    also wenn Dich html weiter bringt, solltes Du unbedingt einen Blick auf http://www.trichview.com werfen.



  • Unser Grafiker hat sich denn Thread grad angesehen und hat gemeint das ich mich nicht ganz richtig ausgedrückt habe. So wäre es richtig:

    1. um eine richtige Druckdarstellung zu erhalten braucht ein Text ein Bild und auch Strichzeichnungen eine Auflösung von Minimum 150 dpi und ein Auflösung von 300 dpi ist besser bei Graustufiges SW (Laser oder so), der Auflösung der Drucker ist total egal er muss nur gleich oder höher sein.
    2. unsere druck Darstellung soll 2,5 x 2,4 cm groß sein..... da kann so viel Pixel drin sein wie es will, aber wenn du nun in dein Forum immer von 94x86 Pixel redet kann die Bilder so groß sein wie ein Scheunentor oder so klein wie 8,6 x 9,4 mm und es sind nur 94x86 punkte drin
    3. wir gehen von Bilder mit 300 dpi aus
    4. sie sollen 2,5 x 2,4 cm groß sein
    5. dann haben diese Bilder mit 300 dpi in alle Grafik Darstellungen auch auf den Bildschirm fast die gleiche Größe wie auf dem Druck
    6. möchte ich ein nicht umgerechnete 300 dpi Bild im Web darstellen ( 72 dpi ) dann wird das Bild um ein vielfaches größer dargestellt weil nun 72 dpi das Maß 2,5 x 2,4 cm auf dem Bildschirm darstellt
    7. der Fall sieht aus wie folgt: wenn die Bilder in unsere Datenbank 2,5 x 2,4 groß sind und 300 dpi haben werden sie im Programm auf dem Bildschirm vielfach zu groß dargestellt ??? und sie werden genau so groß ausgedruckt ??
    8. um hier im c++ die Größe zu ändern hast du ja im Programm Tool ja nur die Pixel Einstellung gefunden und dann landet du immer bei der falsche Darstellung .
    9. du brauchst ein von Pixel nicht berührte Größen Einstellung in cm oder mm, wie im Fotoshop .



  • Sorry, das mit der Mail kam zurueck! Ich schiecks nochmal ohne NOSPAM!

    Zu Deinem letzten Beitrag:

    Soll eine Grafik auf Drucker mit 300 dpi in Groesse 2.54x2.54 cm gedruckt werden, muss das Bild mindestens

    300x300 Pixel haben!!

    Allgemein:

    MindestPixel=Druckgroesse(inZoll) / Aufloesung

    Druckst Du das gleiche mit 600dpi, wird das Bild halb so gross! (1.77 cm)
    Fuer Druck auf 10 cm muss das Bild 1200 Pixel haben (bei 300 dpi)

    Bei abweichenden Werten muss das Bild zum Druck skaliert werden!!!
    D.h.: Bild mit weniger Pixeln -> Wird WUERFELIG (vergroessern)
    Bild mit mehr Pixeln -> Details koennen verloren gehen (verkleinern)



  • Hi binary trust,

    Diesmal hat's ja geklappt mit dem Mail.

    Du hast ja das Tool getestet. Geht das in Deine Richtung :

    - skalierte Anzeige grosser Bilder - ohne Pixelverlust
    - Druck direct ueber Canvas von Printer

    Was ist nun genau Dein Problem?
    Das skalierte Anzeigen oser das Drucken?

    PS: Lass Dich nicht entmutigen. Das Teil ist ein Auszug aus nem grossen Programm - an dem bastel ich seit ca 3 Jahren 'rum, und das wird nie fertig!



  • puhh dann bin ich ja froh.
    hatte schon echt denn mut verlohren 😉
    bin wie gesagt ein blöder anfänger und quäle mir grad erst sachen wie oop, zeiger, referenzen usw. rein und das macht mich schon ein wenig fertig 😞

    naja ich muss wenn ich oop erstmal drin hab erstmal einig werden wie ich es machen soll und wie genau du das wohl angestellt hast. melde mich sobald ich zu dem thema drucken und grafikskalierung komme erneut wenn du nichts dagegen hast. möchte aber wie gesagt erst oop lernen denn ich denke das ist schon wichtig für ein größeres projekt ...

    muss mir auch erstmal sachen wie printer und canvas usw. ansehen um zu sagen was ich eigentlich nicht verstehe.

    danke für deine hilfe!!!!

    gruß
    binary



  • Hi binary,

    Gute Einstellung!

    Meld' Dich, wenn Du Fragen hast.

    PS: Wenn Du Probleme mit Skalieren von Bildern hast, Such mal im Forum nach ImageScroller - war mal ein Beitrag am Jahresanfang!

    Bis spaeter!



  • ok, danke und bis später ...


Anmelden zum Antworten