2D-Grafik Avatar skalieren und zuschneiden.

Leftaf

Mitglied
Moin Moin zusammen,

ich bin gerade am Überlegen wie ich die Herausforung Meistere einen Avatar so anzupassen das er eine Größe für alle hat. Für den Benutzer soll es aber so einfach wie möglich sein.

Ich habe das auf einigen Foren schon gesehen aber ich finde keinen hinweis ob das mit java realisiert worden ist oder mit php.

Grundsätzlich soll der Code folgendes können.

1. Bildhochladen
2. Bildanzeigen
avatarrhr.png

3. Maske einfügen
avatarstep2.png

4. Bild innerhalb der Maske verschieben.
avatarstep3.png

5. ggf. mit + und - button die Skalierung ändern.
avatarstep4.png

6. Inhalt in der Maske als .png abspeicher.
unbenanntvjp.png


Meine Frage ist ob jemand von euch eine solche Aufgabenstellung schon mal gelöst hat oder mir mal seine Gedanken dazu schreiben kann ob java die beste Realisierungsumgebung dafür ist oder doch lieber php.

Hier wurde das mit Flash realisiert aber ich hoffe das geht auch ohne.
Passfoto Generator

Vielen Dank schon mal Leftaf.
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Also das geht durchaus auch in Java (Servlet/JSP/JSF) und dann naürlich mit Java2D (oder ähnlichem). Aber wenn auf dem Hoster sonst PHP läuft, hat man von Java irgendwie nicht viel, dann müsste man PHP empfehlen.
Eigentlich müsste PHP aber eingestampft statt propagiert und exessiv vermarktet werden.
 

bERt0r

Top Contributor
Dafür gibts in Java diese Methode: drawImage
Du lädst dein großes Bild und erstellst ein neues mit deinen gewünschten ausmaßen. Dann machst du mit neuesBild.createGraphics() ein Graphics Objekt bei dem du die Methode oben entsprechend aufrufst.
 

Bernd Hohmann

Top Contributor
Eigentlich müsste PHP aber eingestampft statt propagiert und exessiv vermarktet werden.

[OT]PHP ist im Wesentlichen die konzentrierte Sammlung der wichtigsten in den letzten 40 Jahren einschlägig bekanntgewordenen Anfängerfehler beim Design einer Programmiersprache. (Erhard Schwenk) [/OT]

Ontopic: Knackpunkt bei der Aufgabenstellung ist die Tatsache, dass der Anwender das auf einer Webseite machen soll. Da scheidet Java aufgrund der letzten Sicherheitslücke schonmal aus (und zukünftig werden es zu viele deaktiviert haben als dass man damit rechnen darf). Mit PHP geht das mal gar nicht weil auf dem Server.

Wäre also zu überlegen, ob man das Markieren des Ausschnitts nicht mit Javascript, Flash oder HTML5 realisiert, die Koordianten dann an ein Backend übergibt was den Avatar dann zuschnippelt (zb. imagemagick) und in der Datenbank ablegt.

Bernd
 

Leftaf

Mitglied
Das erklärt warum z.B. die von Passfoto auf Flash gesetzt haben. ABer klar das mit HTML5 hatte ich noch garnicht auf dem Schirm.

Java und Sicherheit kann ich verstehen und würde ich auch so sehen, ggf kann man das mit einem Zertifikat umgehen aber das ist ja auch nur wieder Overhead.

Bei php bin ich auf der Suche auf diesen Code gestossen.

PHP Photoeditor scheint also eine Lösung im Bereich php möglich zu sein. Wer sich das ansehen will hier mal eine Demo install. PHP Ühotoeditor Demo

Ich danke schon mal für eure Vorschläge und Idee, viele Köpfe sind halt doch besser als einer.

/Leftaf
 

Bernd Hohmann

Top Contributor
Bei php bin ich auf der Suche auf diesen Code gestossen.

PHP Photoeditor scheint also eine Lösung im Bereich php möglich zu sein. Wer sich das ansehen will hier mal eine Demo install. PHP Ühotoeditor Demo

Das ist auch "nur" viel Javascript auf dem Client mit einem PHP-Empfänger auf dem Server und leider auch ein totes Projekt.

Wenn Du Firefox benutzt, mach mal Strg+U um in den Quelltext zu schauen.

Liebe Grüsse,
Bernd
 
S

Spacerat

Gast
@Bernd: :lol: Erhard Schwenk sollte man propagieren und exessiv vermarkten. Toller Spruch. :applaus:

Natürlich. Ohne JavaScript (ajax), Flash oder gar Applets (also irgendwas Clientseitiges) geht's nicht. Rein mit Clientseitigem aber auch nicht. Und weil der TO von PHP gesprochen hat, dachte ich halt nur an Servletcontainer und nicht mal daran, dass er solch rudimentäre Dinge wie Applets verwenden will. JavaFX wäre evtl. noch 'ne Alternative, aber ähhh... fragt mich nicht. ;)
Zum Thema Sicherheitsloch im Java-PlugIn: Es gibt auch in Flash so einiges offenes nur dass dort der schwarze Peter der Verantwortung zwischen Adode und Browserherstellern hin und her geschoben werden kann. Als Anwender bekommt man davon leider nur wenig bis gar nichts mit und muss das Flash-ECMA-Gemauschel deswegen in Kauf nehmen. Beim Java-PlugIn kann man kurzerhand zum Abschalten raten aber heutzutage ohne Flash und Javascript vernünftig surfen? Unmöglich.
Ist fast wie 'ne Verschwörung. PHP - der grösste Sch... hat im Web den höchsten Marktanteil serverseitig und ECMA-262 (durch Java- und ActionScript) und Flash clientseitig. Mir kann man sagen, was man will, angreifbarer bleibt stets das, mit der grösseren "Oberfläche" (Marktanteil). Bei Betriebssystemen ist's Windows (auch heute noch unangefochten) und im Web PHP, JavaScript und Flash.
 

Leftaf

Mitglied
So ich bin bei Java nicht so erfolgreich gewesen wie bei PHP aber vielleicht hat jemand ja noch eine Idee für meine letzten -Aufgabe.

Also:

  • Bild hochladen ist klar. [checked]
  • Bild anzeigen ist klar [checked]
  • Maske drüber legen offen
  • Bildverschieben per Maus offen
  • Bild wie gewünscht abspeichern [checked]
  • Optional: Bild skalieren offen.

Hat jemand eine Idee wie ich die Maske oder ein Rechteck im Bild anzeigen kann welches ich dann mit der Maus verschieben kann um $pattern_x, $pattern_y zu erhalten?


Danke für euren support schon mal.


PHP:
<?php
function image_resize($src, $dst, $width, $height, $crop=0, $pattern_x, $pattern_y){

  if(!list($w, $h) = getimagesize($src)) return "Unsupported picture type!";

  $type = strtolower(substr(strrchr($src,"."),1));
  if($type == 'jpeg') $type = 'jpg';
  switch($type){
    case 'bmp': $img = imagecreatefromwbmp($src); break;
    case 'gif': $img = imagecreatefromgif($src); break;
    case 'jpg': $img = imagecreatefromjpeg($src); break;
    case 'png': $img = imagecreatefrompng($src); break;
    default : return "Unsupported picture type!";
  }

  // resize
  if($crop){
    if($w < $width or $h < $height) return "Picture is too small!";
    $ratio = max($width/$w, $height/$h);
    $h = $height / $ratio;
    $x = ($w - $width / $ratio) / 2;
    $w = $width / $ratio;
  }
  else{
    if($w < $width and $h < $height) return "Picture is too small!";
    $ratio = min($width/$w, $height/$h);
    $width = $w * $ratio;
    $height = $h * $ratio;
    $x = 0;
  }

  $new = imagecreatetruecolor($width, $height);

  // preserve transparency
  if($type == "gif" or $type == "png"){
    imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127));
    imagealphablending($new, false);
    imagesavealpha($new, true);
  }

  imagecopyresampled($new, $img, 0, 0, $pattern_x, $pattern_y, $width, $height, $w, $h);

  switch($type){
    case 'bmp': imagewbmp($new, $dst); break;
    case 'gif': imagegif($new, $dst); break;
    case 'jpg': imagejpeg($new, $dst); break;
    case 'png': imagepng($new, $dst); break;
  }
  return true;
}
?>

Bild hochladen.

<?php
  $pic_type = strtolower(strrchr($picture['name'],"."));
  $pic_name = "original$pic_type";
  move_uploaded_file($picture['tmp_name'], $pic_name);
  if (true !== ($pic_error = @image_resize($pic_name, "100x100$pic_type", 100, 100, 1))) {
    echo $pic_error;
    unlink($pic_name);
  }
  else echo "OK!";
?>
 
S

Spacerat

Gast
Jetzt müsste das Thema meines Erachtens in "für Verirrte" verschoben werden, denn die letzten Aufgaben dürften per JavaScript zu lösen sein. Das nicht bös' gemeint. Viele verwechseln Java und JavaScript aber all zu gerne (klingt gleich -> ist gleich; aber das ist falsch) und viele (einige? verd. zumindest gibt es welche. ;)) Javaentwickler wären mit JavaScript definitiv vollkommen überfordert.
[EDIT]Jetzt weis ich, warum hier so oft unfreundlich klingende Antworten zu finden sind... Die sind kürzer und trotzdem präzise. :lol:
...für mich bedeutet das... zu langsam, mal wieder.[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
C JFreeChart X-Achse Werte skalieren, begrenzen, zoomen AWT, Swing, JavaFX & SWT 5
berserkerdq2 Skalieren sich javafx objekte automatisch auf die Bildschirmgröße AWT, Swing, JavaFX & SWT 6
C Swing ImageIcon erstellen, skalieren und verwenden AWT, Swing, JavaFX & SWT 3
U Was genau ist skalieren bei 2dGraphics? AWT, Swing, JavaFX & SWT 4
S Bild neu skalieren - Bild in Bild speichern? AWT, Swing, JavaFX & SWT 6
J JavaFX JavaFX Elemente an Fenstergröße skalieren AWT, Swing, JavaFX & SWT 5
E Bilder skalieren AWT, Swing, JavaFX & SWT 4
B Swing JTextField mit Bildschirmauflösung skalieren lassen. AWT, Swing, JavaFX & SWT 4
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
S JViewPort Ausschnitt skalieren AWT, Swing, JavaFX & SWT 13
A Bild in JLabel skalieren AWT, Swing, JavaFX & SWT 4
S Bild skalieren AWT, Swing, JavaFX & SWT 3
C LayoutManager Grafik soll nicht im GridLayout Skalieren AWT, Swing, JavaFX & SWT 3
A JFrame skalieren AWT, Swing, JavaFX & SWT 2
F 2D-Grafik Skalieren der Scrollbars beim Zoomen einer JScrollPane AWT, Swing, JavaFX & SWT 4
P Swing Bild an Fenstergröße skalieren AWT, Swing, JavaFX & SWT 11
S AWT Skalieren von Polygon über Area klappt nicht AWT, Swing, JavaFX & SWT 4
N 2D-Grafik Panelgrafik im nachhinein skalieren AWT, Swing, JavaFX & SWT 4
C GUI-Komponenten skalieren AWT, Swing, JavaFX & SWT 10
B Fenstergröße automatisch skalieren AWT, Swing, JavaFX & SWT 7
B Bild skalieren AWT, Swing, JavaFX & SWT 2
N JFreeChart: Plot soll mit skalieren AWT, Swing, JavaFX & SWT 5
Q 2D-Grafik Shape skalieren AWT, Swing, JavaFX & SWT 5
D BufferedImage Größe skalieren AWT, Swing, JavaFX & SWT 2
P Swing Skalieren mit DrawImage macht Linien kaputt AWT, Swing, JavaFX & SWT 6
C Image performant skalieren AWT, Swing, JavaFX & SWT 5
R Bild drehen UND skalieren (Image bzw BufferedImage) AWT, Swing, JavaFX & SWT 5
DStrohma Bild für TrayIcon skalieren AWT, Swing, JavaFX & SWT 13
N Panel skalieren AWT, Swing, JavaFX & SWT 7
N Swing sehr großes Bild skalieren AWT, Swing, JavaFX & SWT 8
D image skalieren AWT, Swing, JavaFX & SWT 5
K JPanel proportional skalieren AWT, Swing, JavaFX & SWT 7
P [SWT] Background-Image skalieren statt kacheln AWT, Swing, JavaFX & SWT 2
R Bild skalieren und anschließend beschneiden AWT, Swing, JavaFX & SWT 3
J Fixes Layout auf beliebige Fenstergröße skalieren AWT, Swing, JavaFX & SWT 2
I Layout Problem beim Skalieren AWT, Swing, JavaFX & SWT 3
M Schlechte Qualität beim skalieren von Bildern AWT, Swing, JavaFX & SWT 10
S Bild skalieren AWT, Swing, JavaFX & SWT 9
B Bild Skalieren AWT, Swing, JavaFX & SWT 2
I Bild skalieren AWT, Swing, JavaFX & SWT 4
O JFrame JPanelgrösse fixieren Bild darin skalieren AWT, Swing, JavaFX & SWT 2
M BufferedImage skalieren AWT, Swing, JavaFX & SWT 6
S Drucken - Bild skalieren AWT, Swing, JavaFX & SWT 2
I Bilder skalieren => OutOfMemoryError AWT, Swing, JavaFX & SWT 2
M Bild skalieren AWT, Swing, JavaFX & SWT 8
S AWT Frame-Inhalt in Echtzeit skalieren AWT, Swing, JavaFX & SWT 6
LittleJavaCup Bild zuschneiden (unterschiedliche Ränder) AWT, Swing, JavaFX & SWT 4
frankred Bild zuschneiden - Cropping/Cutting/Clipping? AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben