php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-06-2008, 02:09
Charles Monroe
 Newbie
Links : Onlinestatus : Charles Monroe ist offline
Registriert seit: Sep 2006
Beiträge: 16
Charles Monroe ist zur Zeit noch ein unbeschriebenes Blatt
Standard imagearc() und Linienstärken

Hallo...

Ich habe da gerade einige Problemchen mit der Funktion "imagearc()" und Linienstärken. Zum einen wäre da der Umstand, das zuvor mit "imagesetthickness()" gesetzte Linienstärken bei Vollkreisen bzw. Vollellipsen komplett ignoriert werden. Das umgehe ich, indem ich zwei Halbkreise zeichne. Das jedoch gravierendere Problem ist, das bei dicker werdenden Linienstärken nun an der äusseren Kante seltsame Einkerbungen (ob nun Kreisbogen oder Vollkreis) entstehen (Rote Markierungen im Bild). Die Einkerbungen werden bei stärkeren Linien immer grösser. Hat dafür jemand 'ne Lösung?



cu Charles Monroe

Geändert von Charles Monroe (15-06-2008 um 02:18 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 15-06-2008, 15:56
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Also für Leute, bei denen das Problem bisher noch nicht aufgetreten ist, wird es schwierig dir zu helfen. Da sollte schon mindestens ein kurzer Test-Code her.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3 (permalink)  
Alt 15-06-2008, 17:34
Charles Monroe
 Newbie
Links : Onlinestatus : Charles Monroe ist offline
Registriert seit: Sep 2006
Beiträge: 16
Charles Monroe ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Da... Bitteschön... Der Code...
Die Dimensionen sind so gross, weil die Grafik mit 600 DPI gerändert werden soll, und ca. 25mm x 25mm gross ist.
PHP-Code:
<?php
$img 
imagecreatetruecolor(600600);
imagesavealpha($imgtrue);
imagealphablending($imgfalse);
imageantialias($imgfasle);
$cl imagecolorallocatealpha($img255255255127);
$bg imagecolorallocate($img255255255);
$fg imagecolorallocate($img000);
imagefilledrectangle($img00600600$cl);
imagefilledarc($img3003006006000360$bgnull);
imagesetthickness($img50);
imagearc($img3003005505500180$fg);
imagearc($img300300550550180360$fg);
header("content-type: image/png");
imagepng($img);
?>
cu Charles Monroe

Geändert von Charles Monroe (15-06-2008 um 17:38 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 15-06-2008, 17:51
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Puh, also mein Ergebnis sieht noch deutlich schlimmer aus, als deine verkleinerte Version.

Allerdings scheint es mit imagesetthickness() nicht besser zu gehen.
EDIT:
ist wohl auch ein bekannter bug


Du könntest mal versuchen mehrere (dünne)Kreise ineinander zu setzen, so dass Sie einen großen Kreis ergeben.
Oder zwei gefüllte Kreise übereinander: ImageFilledEllipse
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

Geändert von TobiaZ (15-06-2008 um 17:58 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 15-06-2008, 18:22
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Imagearc benutzt einen Algorythmus bei dem zuerst waagrecht und dann senkrecht Pixel aufgefüllt werden... scheint da nicht ganz zu klappen . Ich weiss nicht genau woran es liegt, aber ich werde es mir mal noch genauer anschauen. Wie Tobiaz gesagt hast verwendest du am besten 2x imagefilledellipse. Das ist das schnellste und du erhältst damit auch die schönsten Kreise.
Mit Zitat antworten
  #6 (permalink)  
Alt 15-06-2008, 18:34
Charles Monroe
 Newbie
Links : Onlinestatus : Charles Monroe ist offline
Registriert seit: Sep 2006
Beiträge: 16
Charles Monroe ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok... 2x 'imagefilledelipse()' klingt gut.
Allerdings (Irgendwas is' immer)... Die Reihenfolge, in welcher der Kreis und der Text gerändert werden ist nicht fest. Wie bekomme ich es denn nun damit hin, ohne den Text zu übermalen?

hier könnt ihr euch mal anschauen, wofür es benötigt wird.

cu Charles Monroe

Geändert von Charles Monroe (15-06-2008 um 18:36 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 15-06-2008, 18:41
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Allerdings (Irgendwas is' immer)... Die Reihenfolge, in welcher der Kreis und der Text gerändert werden ist nicht fest.
Warum nicht?
Zitat:
Wie bekomme ich es denn nun damit hin, ohne den Text zu übermalen?
Wie hast du es denn bei deiner vorherigen Variante hinbekommen?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #8 (permalink)  
Alt 15-06-2008, 18:48
Charles Monroe
 Newbie
Links : Onlinestatus : Charles Monroe ist offline
Registriert seit: Sep 2006
Beiträge: 16
Charles Monroe ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von TobiaZ
Wie hast du es denn bei deiner vorherigen Variante hinbekommen?
Diese Frage verstehe ich nicht. "imagearc()" übermalt den inneren Teil des Kreises doch gar nicht. "imagefilledarc()" dagegen schon.

cu Charles Monroe
Mit Zitat antworten
  #9 (permalink)  
Alt 15-06-2008, 18:54
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Diese Frage verstehe ich nicht. "imagearc()" übermalt den inneren Teil des Kreises doch gar nicht.
Sorry, mein Fehler. Ich hatte irgendwie im Kopf, dass du den text auf den Kreis druckst, nicht darein.

Naja, entweder musst du die Reihenfolge im Programm festlegen. Das sollte theoretisch möglich sein. Wie du da vorgehen musst, kann ich dir aber als Außenstehender nicht sagen.

Alternativ könntest du mal versuchen ob du den Inhalt des Kreises nachträglich transparent bestimmen kannst. Und ob dann der darunterliegende Text zum Vorschein kommt.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #10 (permalink)  
Alt 15-06-2008, 19:49
Charles Monroe
 Newbie
Links : Onlinestatus : Charles Monroe ist offline
Registriert seit: Sep 2006
Beiträge: 16
Charles Monroe ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das hat unheimlich geholfen!!! Mit anderen Worten es klappt. Etwa so...

PHP-Code:
<?php
$img 
imagecreatetruecolor(600600);
imagesavealpha($imgtrue);
imagealphablending($imgtrue);
imageantialias($imgfasle);
$cl imagecolorallocatealpha($img255255255127);
$bg imagecolorallocate($img255255255);
$fg imagecolorallocate($img000);
imagefilledrectangle($img00600600$cl);
imagefilledarc($img3003006006000360$bgnull);
newimagearc($img3003006006000360$fg50);
header("content-type: image/png");
imagepng($img);

function 
newimagearc(&$img$cx$cy$w$h$s 0$e 360$c$strength 1)
{
  
$cx round($cx $w 2);
  
$cy round($cy $h 2);
  
$dx round($w 2);
  
$dy round($h 2);
  
$tmp imagecreatetruecolor($w$h);
  
imagealphablending($tmpfalse);
  
$tr imagecolorallocatealpha($tmp255255255127);
  
imagefilledrectangle($tmp00$w$h$tr);
  
imagefilledarc($tmp$dx$dy$w$h$s$e$cnull);
  
imagefilledarc($tmp$dx$dy$w $strength 2$h $strength 2$s$e$trnull);
  
imagealphablending($imgtrue);
  
imagecopy($img$tmp$cx$cy00$w$h);
}
?>
Danke vielmals.

cu Charles Monroe

@edit: Ok... kleiner Irrtum. Mal geht's... (GD 2.0.34) und mal nicht... (GD 2.0.28)

Geändert von Charles Monroe (18-06-2008 um 20:18 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 15-06-2008, 21:32
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Was willst du mit deiner Funktion genau bezwecken?
Warum nicht einfach so:
PHP-Code:
<?php
$img 
imagecreatetruecolor(600600);
imagesavealpha($imgtrue);
imagealphablending($imgtrue);
imageantialias($imgfasle);
$bg imagecolorallocate($img255255255);
$fg imagecolorallocate($img000);
imagefill($img00$bg);
imagefilledellipse($img300300550550$fg);
imagefilledellipse($img300300500500$bg);
header("content-type: image/png");
imagepng($img);
?>
Mit Zitat antworten
  #12 (permalink)  
Alt 15-06-2008, 22:00
Charles Monroe
 Newbie
Links : Onlinestatus : Charles Monroe ist offline
Registriert seit: Sep 2006
Beiträge: 16
Charles Monroe ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von jmc
Was willst du mit deiner Funktion genau bezwecken?
Wurde schon (mehr oder weniger konkret) erwähnt. Das innere des Kreises soll Transparent sein und nicht eben Weis(s?). "newimagearc()" funktioniert prächtig ab GD 2.0.34 mit Freetype 2.1.9. Bei dem Server wo es laufen soll (siehe Link weiter oben) mit GD 2.0.28 und Freetype 2.1.3 will es aber nicht.

cu Charles Monroe

@edit: Ich hab' nochma 'n bisserl rumprobiert. Nun scheints auch bei GD 2.0.28 zu funzen. Nochmals danke.

Geändert von Charles Monroe (15-06-2008 um 23:13 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 16-06-2008, 02:43
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Das macht hier aber algemein nicht so viel Sinn denke ich. Die Schrift bringst du da ja trotzdem rein. Und wenn du die Transparenz dieses Bereiches schon brauchst kannst du das auch einfacher machen. Z.B. so:
PHP-Code:
<?php
$img 
imagecreatetruecolor(600600);
imagesavealpha($imgtrue);
imageantialias($imgfasle);
$cl imagecolorallocatealpha($img255255255127);
$bg imagecolorallocate($img255255255);
$fg imagecolorallocate($img000);
imagefill($img00$bg);
imagefilledellipse($img300300550550$fg);
imagealphablending($imgfalse);
imagefilledellipse($img300300500500$cl);
imagealphablending($imgtrue);
header("content-type: image/png");
imagepng($img);
?>
Mit Zitat antworten
  #14 (permalink)  
Alt 18-06-2008, 20:16
Charles Monroe
 Newbie
Links : Onlinestatus : Charles Monroe ist offline
Registriert seit: Sep 2006
Beiträge: 16
Charles Monroe ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von jmc
Die Schrift bringst du da ja trotzdem rein
Nicht ganz... Die Schrift könnte unter Umständen schon da sein. Der Code ist oben ist nur ein Bruchteil von dem Ergebnis, welches über den Link darunter zu betrachten ist. Das soll ein Stempel-Designer werden, welcher auf Element-Basis arbeitet. D.h. man kann erstmal einen Text (Textkreis) )erstellen und anschliessend einen Rahmen (Kreis) herum zeichnen. Übrigens kann die Funktion nun auch von anderen (kopieren/einfügen) verwendet werden, da sie auf diese Art "imagearc()" komplett ersetzt. Vielleicht sollte man noch die Strichstärke notfalls auf 1 setzen sowie Start- und Endwinkel initialisieren. Ich ändere das mal.

cu Charles Monroe

Geändert von Charles Monroe (18-06-2008 um 20:20 Uhr)
Mit Zitat antworten
  #15 (permalink)  
Alt 18-06-2008, 21:57
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Auch dann kannst du ja ohne weiteres dieses Bild als Hintergrund nehmen und den Rest darauf kopieren. Oder umgekehrt, ob die Schrift schon da ist oder nicht spielt keine Rolle...
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:12 Uhr.