Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de

  
c++.de :: C# und .NET ::  Bild aus Picturebox skalieren und speichern     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Sonnenlichtfee
Unregistrierter




Beitrag Sonnenlichtfee Unregistrierter 17:15:22 10.02.2011   Titel:   Bild aus Picturebox skalieren und speichern            Zitieren

Hallo,

über ein openFileDialog lade ich ein Bild in meine Picturebox.
Anschließend soll das Bild gespeichert werden.

Das hab würde soweit auch funktionieren:
Code:
pictureBox1.Image.Save("D:\\test.jpg");


Allerdings möchte ich, dass das Bild immer in der gleichen (Pixel) Größe gepeichert wird.
Wie kann ich das umsetzten?

Vielen Dank für Eure Hilfe!
Firefighter
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.03.2007
Beiträge: 2989
Beitrag Firefighter Mitglied 18:14:21 10.02.2011   Titel:              Zitieren

Indem du das Image aus der Picturebox vorher in ein neues Images mit der vordefinierten Größe zwischenspeicherst und dieses dann speicherst ;)

_________________
Clean-Code-Developer
Wie man richtig Fragen stellt
Dravere
Admin

Benutzerprofil
Anmeldungsdatum: 13.06.2005
Beiträge: 8426
Beitrag Dravere Admin 18:20:10 10.02.2011   Titel:              Zitieren

Noch einen Link als Hilfestellung:
http://msdn.microsoft.com/en-us/library/0wh0045z.aspx

Grüssli

_________________
Danke für die Hilfe, Antwort oder Meinung!
C++: Std-Lib Referenz
C# .Net: MSDN kennt die Antwort
Sonnenlichtfee
Unregistrierter




Beitrag Sonnenlichtfee Unregistrierter 09:32:06 11.02.2011   Titel:              Zitieren

Ich stehe leider auf dem Schlauch :confused:

Code:
Bitmap temp = new Bitmap(250, 200);
temp = pictureBox1.Image;
temp.Save("D:\\temp.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);


Leider funktioniert das auch nicht ... tut mir leid, dass ich hier so billige Sachen nicht weiß/kann, aber ich komme grad echt nicht weiter.
Firefighter
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.03.2007
Beiträge: 2989
Beitrag Firefighter Mitglied 10:06:30 11.02.2011   Titel:              Zitieren

"funktioniert nicht" ist keine Fehlermeldung.
Was genau funktioniert denn nicht?

_________________
Clean-Code-Developer
Wie man richtig Fragen stellt
Sonnenlichtfee
Unregistrierter




Beitrag Sonnenlichtfee Unregistrierter 10:14:17 11.02.2011   Titel:              Zitieren

Natürlich, tut mir leid!

Die Fehlermeldung:
Zitat:

Der Typ "System.Drawing.Image" kann nicht implizit in "System.Drawing.Bitmap" konvertiert werden. Es ist bereits eine explizite Konvertierung vorhanden. (Möglicherweise fehlt eine Umwandlung.)
Firefighter
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.03.2007
Beiträge: 2989
Beitrag Firefighter Mitglied 10:52:21 11.02.2011   Titel:              Zitieren

Du hast dir den Link von Dravere nicht richtig durchgelesen, er hat dir schon den richtigen Konstruktor geschickt. Du musst ihn jetzt nur noch korrekt verwenden ;)

_________________
Clean-Code-Developer
Wie man richtig Fragen stellt
Sonnenlichtfee
Unregistrierter




Beitrag Sonnenlichtfee Unregistrierter 11:18:22 11.02.2011   Titel:              Zitieren

Mit dem Link komme ich leider nicht recht weiter, vielleicht habe ich über das Wochenende noch einen Geistesblitz oder es kann mir noch jemand einen kleinen Tipp geben! Danke auf jeden Fall!
Firefighter
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.03.2007
Beiträge: 2989
Beitrag Firefighter Mitglied 11:20:21 11.02.2011   Titel:              Zitieren

Na du übergibst dem Konstruktor von Bitmap das Image aus der picturebox1 und die Size die du haben willst. Size ist wiederum eine Klasse(oder struct, ist jetzt ja nich so wichtig) von welcher du ein Objekt erzeugst mit den Größenangaben die du brauchst. Ich bin mir sicher du wirst für diese eine Zeile Code keinen Hilfscode von uns gebrauchen ;)

_________________
Clean-Code-Developer
Wie man richtig Fragen stellt
Dravere
Admin

Benutzerprofil
Anmeldungsdatum: 13.06.2005
Beiträge: 8426
Beitrag Dravere Admin 13:14:19 11.02.2011   Titel:              Zitieren

Sonnenlichtfee schrieb:
Mit dem Link komme ich leider nicht recht weiter, ...

Was ist denn daran unklar? Du weisst doch, wie man einen Konstruktor einsetzt? Wenn nicht, dann solltest du dringend die Grundlagen durcharbeiten. Ansonsten erklär genauer was unklar ist. Du musst eine Zeile schreiben, wenn wir sie dir einfach hinschreiben, dann habe ich meine Zweifel, dass du viel daraus lernst.

Oder hast du Mühe mit dem Englisch? Einfach das en-us im Link durch de-de ersetzen:
http://msdn.microsoft.com/de-de/library/0wh0045z.aspx

Aber Englisch lesen sollte man in der Programmierung mindestens können :)

Grüssli

_________________
Danke für die Hilfe, Antwort oder Meinung!
C++: Std-Lib Referenz
C# .Net: MSDN kennt die Antwort
Sonnenlichtfee
Unregistrierter




Beitrag Sonnenlichtfee Unregistrierter 03:13:17 13.02.2011   Titel:              Zitieren

Kannst knicken, piller ich nicht! ! !
Sonnenlichtfee
Unregistrierter




Beitrag Sonnenlichtfee Unregistrierter 13:12:30 14.02.2011   Titel:              Zitieren

Hallo,

der letzte Eintrag stammt leider nicht von mir!!
Zitat:

02:13:17 13.02.2011 Titel: Zitieren
Kannst knicken, piller ich nicht! ! !


Hier mal mein Code, das Bild wird auch verkleinert, aber leider nicht sakliert, sondern nur ein Ausschnitt auf die von mir angegebene Größe geschnitten:

Code:
Bitmap orgImage = new Bitmap(pictureBox1.Image);
                        Bitmap newImage = new Bitmap(250, 200);
                        Graphics gimage = Graphics.FromImage(newImage);
                        Rectangle compressionRectangle = new Rectangle(0, 0, orgImage.Width / 2, orgImage.Height / 2);
                        gimage.DrawImage(orgImage, compressionRectangle);
 
                        newImage.Save("D:\test.jpg");


Bin ich zuminest auf dem richtigen Weg?
Danke!
Dravere
Admin

Benutzerprofil
Anmeldungsdatum: 13.06.2005
Beiträge: 8426
Beitrag Dravere Admin 14:28:01 14.02.2011   Titel:              Zitieren

Sonnenlichtfee schrieb:
Bin ich zuminest auf dem richtigen Weg?

Nein. Und ich stelle nochmals die Frage: Was ist denn bitte an der Dokumentation zu diesem Konstruktor von Bitmap unklar? :confused:

Grüssli

_________________
Danke für die Hilfe, Antwort oder Meinung!
C++: Std-Lib Referenz
C# .Net: MSDN kennt die Antwort
Sonnenlichtfee
Unregistrierter




Beitrag Sonnenlichtfee Unregistrierter 15:03:34 14.02.2011   Titel:              Zitieren

Problem:
Zitat:

Du weisst doch, wie man einen Konstruktor einsetzt?


Sollte wohl wirklich an den Grundlagen arbeiten, denn genau das ist mein Problem. :confused:
Dravere
Admin

Benutzerprofil
Anmeldungsdatum: 13.06.2005
Beiträge: 8426
Beitrag Dravere Admin 15:08:39 14.02.2011   Titel:              Zitieren

Dann arbeite dringend die Grundlagen durch! Kannst ja den C# Programming Guide lesen, ist ein guter Einstieg:
http://msdn.microsoft.com/en-us/library/67ef8sbd.aspx

Wie man einen Konstruktor nutzt, ist in diesem Guide auch beschrieben:
http://msdn.microsoft.com/en-us/library/ms173115.aspx

Wie willst du eine Sprache verwenden, wenn du sie gar nicht lernst? Mit ein wenig rumpröbeln wirst du nirgendwo hinkommen.

Grüssli

_________________
Danke für die Hilfe, Antwort oder Meinung!
C++: Std-Lib Referenz
C# .Net: MSDN kennt die Antwort
Sonnenlichtfee
Unregistrierter




Beitrag Sonnenlichtfee Unregistrierter 10:14:44 15.02.2011   Titel:              Zitieren

So, hier mal meine Lösung.
Ich weiß zwar nicht, ob es nun wirklich so gemacht ist, wie Ihr vorgeschlagen habt, aber zumindest erreicht ich damit, was ich mir vorgestellt habe:

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public Image skalieren(Image img, int groesse)
        {
            int originalB = img.Width;
            int originalH = img.Height;
            int skaliertB = (int)(originalB * groesse);
            int skaliertH = (int)(originalH * groesse);
 
            Bitmap bmp = new Bitmap(skaliertB, skaliertH);
 
            Graphics graphic = Graphics.FromImage((Image)bmp);
            graphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
 
            graphic.DrawImage(img, 0, 0, skaliertB, skaliertH);
            graphic.Dispose();
 
            bmp.Save("C:\\test.jpg");
            return (Image)bmp;


Aufruf:
Code:
skalieren(pictureBox1.Image, 5);


Welche Bücher wären sonst lohnenswert, um richtig in die C# Programmierung rein zu kommen?
Ich weiß, im Internet gibt es viele Seiten, aber mir ist eben etwas "handfestes" lieber ...

Danke!
Dravere
Admin

Benutzerprofil
Anmeldungsdatum: 13.06.2005
Beiträge: 8426
Beitrag Dravere Admin 10:30:30 15.02.2011   Titel:              Zitieren

Sag mal, wie bist du auf diese Lösung gekommen? Wohl kaum mit rumpröbeln, sondern indem du gewisse Dokumentationen und Seiten gelesen hast. Wenn du dich auf die Sprache konzentriert hättest und auf die Links, welche ich dir gegeben hätte, dann wäre aus der Lösung folgendes geworden:
C#:
var scaledImg = new Bitmap(pictureBox1.Image, new Size(100, 100)); // 100x100 oder halt eine andere Grösse
scaledImg.Save("C:/test.jpg");


Bücher wurden hier schon viele vorgeschlagen, einfach mal durchsuchen:
http://www.c-plusplus.de/forum/173222
http://www.c-plusplus.de/forum/39583
http://www.c-plusplus.de/forum/272550

Der C# Programming Guide ist aber wirklich gut. Den sollte man nicht mit einem Tutorial verwechseln. Er stammt ja auch direkt von Microsoft. Auch wenn du dich für ein Buch entscheidest, ich würde dir empfehlen, ihn irgendwo im Hinterkopf zubehalten. Über die MSDN Suche kommt man so auch schnell an zusätzliche Informationen oder kann kurz spicken gehen.
http://social.msdn.microsoft.com/search/en-us

Grüssli

_________________
Danke für die Hilfe, Antwort oder Meinung!
C++: Std-Lib Referenz
C# .Net: MSDN kennt die Antwort
Unix-Tom
Moderator

Benutzerprofil
Anmeldungsdatum: 18.07.2000
Beiträge: 10418
Beitrag Unix-Tom Moderator 07:47:29 16.02.2011   Titel:              Zitieren

Weißt Du wie man das als Softwareentwickler macht?

www.google.de

Suchbegriffe: Was möchte ich machen!

c# image skalieren

dann schaut man was man da braucht.

Geht auch mit anderen suchbegriffen

c# bild skalieren
c# image verkleinern
c# .. ..... ...
etc
etc

Solche Sachen müsste man nie hier fragen da es tausende Seiten mit Code gibt,.

_________________
Moderator für MFC, Linux, C# - NET und Datenbanken
c++.de :: C# und .NET ::  Bild aus Picturebox skalieren und speichern   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.