| 

.NET C# Java Javascript Exception

1
Ich hab hier jede Menge Bilder zu verarbeiten, die ich bereits ganz simple mit C# neu vergößer/verkleiner.

using (Bitmap bitmap = new Bitmap(bildAlt))
{
Bitmap neu = bitmap.ScaleProportional(500, 500);
neu.Save(bildNeu, codec, para);
neu.Dispose();
bitmap.Dispose();
}


Schön wäre es jetzt noch, wenn ich bei der Gelegenheit auch vorhandene weiße Ränder rund um die Bilder entfernen könnte.

Hat da jemand ein Beispiel zur Hand, wie sowas gemacht wird?
News:
11.03.2011
Gast
11 2
2 Antworten
1
Rect layoutRec = new Rect(0,0,int.MaxValue,int.MaxValue);
Bitmap neu = bitmap.ScaleProportional(500, 500);
for(int x =0; x<=bitmap.width; x++)
for(int y =0; y<=bitmap.height; y++)
if(bitmap.GetPixel(x,y) != Color.White){
if(x<layoutRec.X)
layoutRec.X = x;
if(y<layoutRec.Y)
layoutRec.Y = y;
if(x>layoutRec.Width)
layoutRec.Width = x;
if(y>layoutRec.Height)
layoutRec.Height = y;
}
Rectangle cropRectangle = new Rectangle(0, 0, max.X - min.X, max.Y - min.Y);
Bitmap newBitmap = new Bitmap(cropRectangle.Width, cropRectangle.Height);
using (Graphics g = Graphics.FromImage(newBitmap)) {
g.DrawImage(neu, 0, 0, cropRectangle, GraphicsUnit.Pixel);
return newBitmap;
}

so oder so ähnlich kannst du es machen.
11.03.2011
Floyd 14,6k 3 9
Floyd 14,6k 3 9
0
using (Bitmap bitmap = new Bitmap(bildAlt))
{
Point min = new Point(bitmap.Width, bitmap.Height);
Point max = new Point(0, 0);

for (int x = 0; x < bitmap.Width; x++)
{
for (int y = 0; y < bitmap.Height; y++)
{
Color pixelCol = bitmap.GetPixel(x, y);

if (!(pixelCol.R >= 250 && pixelCol.G >= 250 && pixelCol.B >= 250))
{
if (x < min.X) min.X = x;
if (y < min.Y) min.Y = y;
if (x > max.X) max.X = x;
if (y > max.Y) max.Y = y;
}
}
}

Rectangle cropRectangle = new Rectangle(min.X, min.Y, max.X - min.X, max.Y - min.Y);
Bitmap bitmap2 = new Bitmap(cropRectangle.Width, cropRectangle.Height);
bitmap2.SetResolution(bitmap.HorizontalResolution, bitmap.VerticalResolution);
Graphics g = Graphics.FromImage(bitmap2);
g.DrawImage(bitmap, 0, 0, cropRectangle, GraphicsUnit.Pixel);

bitmap2.Save(bildNeu, codec, para);
}


So sollte es funktionieren... Die Resolution ist ein möglicher Fallstrick, wenn die Auflösung (DPI) der beiden Bitmaps nicht übereinstimmt, kommt das Bild u.U. nur vergrößert im Ziel-Bitmap an.
11.03.2011
commänder 420 1 7
2
Wärs nicht wenigstens Fair die Quelle zu nennen! http://www.dreamincode.net/forums/topic/210843-remove-white-pixels-from-top-and-bottom-of-image/
Floyd 11.03.2011
Sorry, die Quelle hatte ich nicht mehr. Den Code hatte ich in einem meiner Projekte drin, und einfach von dort rauskopiert.
Das anpassen der Auflösung fehlt in dem Link auch, da war ich am Anfang drübergestolpert, weil der Code einfach nicht funktioniert hatte.
commänder 12.03.2011
BTW Floyd: Wenn Du es schon anmeckerst, dass die Quelle fehlt, in Deinem Posting ist diese auch nicht angegeben... :-P
commänder 12.03.2011
Brauch ich auch nicht weil ich den Code selbst aus dem Gedächtnis geschrieben habe.
Floyd 12.03.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH