Veröffentlicht 3. Juni 200817 j 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
3. Juni 200817 j 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?
4. Juni 200817 j Autor 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 200817 j von Narf!
4. Juni 200817 j 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.
5. Juni 200817 j Autor 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?
8. Juli 200817 j Autor Das war es doch noch nicht so ganz. Jetzt lade ich ein Bild mit 400x400 DPI und gespeichert wird aber 96x96 DPI.
8. Juli 200817 j Sicher, dass du DPI (Auflösung) meinst, und nicht Pixel (Größe)? Wie sieht der echte Code aus?
8. Juli 200817 j Autor Ja, ich meine die Auflösung. Die Maße bleiben 1748x1748. Für "echten" Code siehe Beitrag 1 oder 3.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.