Hy,
ich habe eine Bild über einen OpenFileDialog eingelesen und übergebe es meiner Classe als ImageData.
Hier erstma der Quellcode:
Ich will die Brightness änder, doch irgendwie bekomme ich immer ein Schwarzes Bild.
Es ist dringt, ich bitte um eure Hilfe.
Danke schonma im vorraus.
MfG thomet
ich habe eine Bild über einen OpenFileDialog eingelesen und übergebe es meiner Classe als ImageData.
Hier erstma der Quellcode:
Code:
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.PaletteData;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;
public class brightness {
/**
* Funktion um die Helligkeit eines Bildes zu verändern
* @param imgData ImageData des Bildes
* @param bright Helligkeit für das Bild
* @return Image mit der übergebenen Helligkeit
*/
public Image setBrightness(ImageData imgData, int bright) {
Image im = null;
if (!(imgData == null)) {
// Breites des Bildes
int width = imgData.width;
// Höhe des Bildes
int height = imgData.height;
// PaletteData vom Bild
PaletteData palette = imgData.palette;
// Neues RGB Array
RGB [] newRGBs = new RGB[width*height];
int i=0;
for (int y=0;y<height;y++) {
for (int x=0;x<width;x++) {
// Pixel auslesen
int pixel = imgData.getPixel(x, y);
// RGB Werte des Pixel auslesen
RGB rgb = palette.getRGB(pixel);
// RGB zu Color convertieren
Color c = new Color(Display.getDefault(), rgb);
// Brightness setzen
c = setColorBrigh(c,bright);
// Neues RGB Array bauen
newRGBs[i] = new RGB(c.getRed(),c.getGreen(),c.getBlue());
i++;
}
}
// Neue RGBs der Palette übergeben
palette.colors = newRGBs;
// Neue ImageData mit neuer Palette erstellen
ImageData newImgData = new ImageData(width, height, 8, palette);
// Image aus ImageData erstellen
im = new Image(null, newImgData);
}
return im;
}
/**
* Setzt die Helligkeit einer Farbe (Color)
* @param c Color
* @param value Helligkeitswert
* @return Color mit neuen Helligkeitswert
*/
private Color setColorBrigh(Color c, float value) {
// RGB werte aus Color auslesen
RGB rgb = c.getRGB();
// RGB zu HSB convertieren
float[] fs = java.awt.Color.RGBtoHSB(rgb.red, rgb.green, rgb.blue, null);
// neue Color erstellen mit veränderten Brightness
java.awt.Color cc = new java.awt.Color(java.awt.Color.HSBtoRGB(fs[0], fs[1], value));
// Rückgabe der neuen Color
return new Color(Display.getDefault(), cc.getRed(), cc.getGreen(), cc.getBlue());
}
}
Ich will die Brightness änder, doch irgendwie bekomme ich immer ein Schwarzes Bild.
Es ist dringt, ich bitte um eure Hilfe.
Danke schonma im vorraus.
MfG thomet