Narf! Geschrieben 3. Juni 2008 Geschrieben 3. Juni 2008 Hallo an alle Zeichner! CImage img; CImage img.Load("Bild.jpg"); CDC *pDC=CDC::FromHandle(img.GetDC()); //keine weitere Bearbeitung oder pDC->DrawText() img.Save("NeuBild.jpg"); img.ReleaseDC(); Beim Laden hat das Bild eine Auflösung von 420x420. Beim Speichern aber 1748x1748. Die Bilder haben beide 96 DPI. Warum wird die Auflösung geändert ohne dass ich was dazu tun muss bzw. was kann ich dagegen tun? VC++ 2003, Konsole-Programm Zitieren
Klotzkopp Geschrieben 3. Juni 2008 Geschrieben 3. Juni 2008 Kann ich nicht reproduzieren. Das gespeicherte Bild hat dieselbe Größe (in Pixel) wie das Quellbild. Das Problem steckt vermutlich in dem Code, den du hier weggelassen hast. Und wenn da keine weitere Bearbeitung stattfindet, warum brauchst du einen DC? Zitieren
Narf! Geschrieben 4. Juni 2008 Autor Geschrieben 4. Juni 2008 (bearbeitet) Dann mal hier etwas vom Rest, Text zeichnen: CDC *pDC=0; int main() { CImage img; img.Load("Bild.jpg") pDC=CDC::FromHandle(img.GetDC()); CRect rect; //hier wird der Output-Bereich festgelegt rect.top=150; rect.left=550; rect.bottom=rect.top+60; rect.right=rect.left+800; DrawText("Text", 48, rect); //hier muss ich die Schriftgröße ziemlich groß wählen, da sie sonst auf dem neuen Bild kaum zu erkennen ist. img.Save("NeuBild.jpg"); img.ReleaseDC(); }//end int main(); void DrawText(CString Text, CRect rect, int hoehe); { CFont font; LOGFONT lFont; ZeroMemory(&lFont, sizeof(LOGFONT)); lFont.lfHeight=hoehe; lFont.lfWeight=FW_EXTRABOLD; strcpy(lFont.lfFaceName, "Verdana"); VERIFY(font.CreateFontIndirect(&lFont)); CFont* def_font=pDC->SelectObject(&font); pDC->DrawText(Text, Text.GetLength(), rect, DT_VCENTER|DT_END_ELLIPSIS|DT_LEFT|DT_NOFULLWIDTHCHARBREAK|DT_WORDBREAK); font.DeleteObject(); }//end void DrawText() Bearbeitet 4. Juni 2008 von Narf! Zitieren
Klotzkopp Geschrieben 4. Juni 2008 Geschrieben 4. Juni 2008 Narf!, wenn du schon nicht den echten Code zeigst, sondern ein Beispiel zusammenklöppelst, dann prüf doch bitte vorher, dass dieses Beispiel kompilierbar ist und vor allem das Problem auch reproduziert. Zitieren
Narf! Geschrieben 5. Juni 2008 Autor Geschrieben 5. Juni 2008 Ach Mensch! :old Man sollte natürlich darauf achten, dass man auch das richtige Basis-Bild lädt.:upps Also die Maße bleiben gleich, wie schon erwähnt. Ich denke mal, man kann das Thema löschen, oder? Zitieren
Narf! Geschrieben 8. Juli 2008 Autor Geschrieben 8. Juli 2008 Das war es doch noch nicht so ganz. Jetzt lade ich ein Bild mit 400x400 DPI und gespeichert wird aber 96x96 DPI. Zitieren
Klotzkopp Geschrieben 8. Juli 2008 Geschrieben 8. Juli 2008 Sicher, dass du DPI (Auflösung) meinst, und nicht Pixel (Größe)? Wie sieht der echte Code aus? Zitieren
Narf! Geschrieben 8. Juli 2008 Autor Geschrieben 8. Juli 2008 Ja, ich meine die Auflösung. Die Maße bleiben 1748x1748. Für "echten" Code siehe Beitrag 1 oder 3. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.