Hallo! Ich habe ein Problem.
Ich habe ein Uploadskript, welches die Grafik auch noch bearbeiten soll. Ziel ist es, das Bild in einen Polaroid-Stil zu bekommen. Dazu muss ich die Grafik skalieren, beschneiden und drehen.
Nun zu meinem Problem:
Ich bin gezwungen im ersten Schritt die Grafik zu skalieren, da sonst beim Drehen zu große Dateien enstehen.
Ich gehe also wie folgt vor:
- Skalieren
- Beschneiden
- Drehen
- In Polaroid-Master einsetzen
Nun entsteht das Problem, dass beim Drehen ein starkes Aliasing entsteht. Ich Drehe mit Hintergrundfarbe weiß und setze das dann in die polariod-vorlage ein
Ein Beispiel:
Hier seht man sehr schöne den Treppeneffekt. Kann ich es irgendwie hinbekommen, dass das besser berechnet wird beim drehen? Es gibt ja die Antialiasing-Einstellung für Bilder in PHP, jedoch bin ich nicht sicher, wie ich die einsetzen soll, da das Bild beim Drehen ja erst erzeugt wird:
bool imageantialias ( resource $image , bool $enabled )
Hier ist das momentane Skript (Speicherfreigaben sind noch nicht drin)
mein Skript:
Ich habe ein Uploadskript, welches die Grafik auch noch bearbeiten soll. Ziel ist es, das Bild in einen Polaroid-Stil zu bekommen. Dazu muss ich die Grafik skalieren, beschneiden und drehen.
Nun zu meinem Problem:
Ich bin gezwungen im ersten Schritt die Grafik zu skalieren, da sonst beim Drehen zu große Dateien enstehen.
Ich gehe also wie folgt vor:
- Skalieren
- Beschneiden
- Drehen
- In Polaroid-Master einsetzen
Nun entsteht das Problem, dass beim Drehen ein starkes Aliasing entsteht. Ich Drehe mit Hintergrundfarbe weiß und setze das dann in die polariod-vorlage ein
Ein Beispiel:
Hier seht man sehr schöne den Treppeneffekt. Kann ich es irgendwie hinbekommen, dass das besser berechnet wird beim drehen? Es gibt ja die Antialiasing-Einstellung für Bilder in PHP, jedoch bin ich nicht sicher, wie ich die einsetzen soll, da das Bild beim Drehen ja erst erzeugt wird:
bool imageantialias ( resource $image , bool $enabled )
Hier ist das momentane Skript (Speicherfreigaben sind noch nicht drin)
mein Skript:
PHP:
// File and rotation
$degrees = -3.3;
// laden des Bilds
$source = imagecreatefromjpeg($path.$img_ordner.$filename);
$resized = imagecreatetruecolor(220,165);
$cropped = imagecreatetruecolor(220,165);
//berechne den Beschneidungsteil
$percW = imagesx($source)/220;
$percH = imagesy($source)/165;
//Breite-Koeffizient kleiner -> auf Breite skalieren und Höhe zuschneiden
if($percW < $percH)
{
//skalieren
$resized = imagecreatetruecolor(220,imagesy($source)/$percW);
imagecopyresampled($resized,$source,0,0,0,0,220,imagesy($source)/$percW ,imagesx($source),imagesy($source));
imageCopy($cropped,$resized,0,0,0,(imagesy($resized)-165)/2,220,165);
$ausgabe.= 'Ursprung: '.imagesx($source).'x'.imagesy($source).'<br />';
$ausgabe.= 'Skaliert auf: '.imagesx($resized).'x'.imagesy($resized).'<br />';
$ausgabe.= 'Beschnitten auf: '.imagesx($cropped).'x'.imagesy($cropped).'<br />';
}
//Höhen-Koeffizient kleiner --> auf Höhe skalieren und Breite zuschneiden
else
{
$resized = imagecreatetruecolor(imagesx($source)/$percH,165);
imagecopyresampled($resized,$source,0,0,0,0,imagesx($source)/$percH,165 ,imagesx($source),imagesy($source));
imageCopy($cropped,$resized,0,0,(imagesx($resized)-220)/2,0,220,165);
$ausgabe.= 'Ursprung: '.imagesx($source).'x'.imagesy($source).'<br />';
$ausgabe.= 'Skaliert auf: '.imagesx($resized).'x'.imagesy($resized).'<br />';
$ausgabe.= 'Beschnitten auf: '.imagesx($cropped).'x'.imagesy($cropped).'<br />';
}
//drehen
$weiss = imagecolorallocate($cropped ,0xFF,0xFF,0xFF);
imageantialias($cropped ,true); //!scheint keinen Effekt zu haben!
imagealphablending($cropped ,true); //!scheint keinen Effekt zu haben!
$rotated = imagerotate($cropped , $degrees, $weiss ,1);
$ausgabe.= 'Gedreht um: '.$degrees.' Grad<br />';
//laden des masters
$master = imagecreatefromjpeg($path.'photoMaster.jpg');
ImageCopy($master,$rotated,21,20,0,0, imagesx($rotated),imagesy($rotated));
// Output
imagejpeg($master,$path.$img_ordner.$filename,90);