<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>kreis &#8211; EGM Weblog &#8211; Archive Edition</title>
	<atom:link href="https://www.weblog.co.at/tags/kreis/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.weblog.co.at</link>
	<description>Wordpress Experte Wien &#124; Fotografie &#124; Layout</description>
	<lastBuildDate>Fri, 15 Feb 2013 22:30:11 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://weblog.co.at/wp-content/uploads/sites/5/cropped-egmlogo_dunkel_512-36x36.jpg</url>
	<title>kreis &#8211; EGM Weblog &#8211; Archive Edition</title>
	<link>https://www.weblog.co.at</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Per PHP &#038; CSS ein Logo größtmöglich in einen Kreis einsetzen</title>
		<link>https://www.weblog.co.at/per-php-css-ein-logo-grostmoglich-in-einen-kreis-einsetzen/</link>
					<comments>https://www.weblog.co.at/per-php-css-ein-logo-grostmoglich-in-einen-kreis-einsetzen/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Tue, 22 Jan 2013 12:24:22 +0000</pubDate>
				<category><![CDATA[HTML,CSS & Co.]]></category>
		<category><![CDATA[PHP,CGI & Co.]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[kreis]]></category>
		<category><![CDATA[logo]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[timthumb]]></category>
		<guid isPermaLink="false">https://www.egm.at/weblog/?p=4631</guid>

					<description><![CDATA[Für ein aktuelles WordPress-Kundenprojekt sollen Firmenlogos automatisiert vor einem kreisförmigen Hintergrund dargestellt werden. Die Aufgabenstellung war, die Logos trotz unterschiedlicher Seitenverhältnisse  größtmöglich in den Kreis einzupassen, ohne dass eines irgendwo über den Rand drüberschaut.  Mit Unterstufenmathematik recht einfach gelöst, nur wissen muss mans ;-) Das Grundsetup: ein quadratisches DIV mit dem Kreis als Hintergrund, vor ... <a title="Per PHP &#038; CSS ein Logo größtmöglich in einen Kreis einsetzen" class="read-more" href="https://www.weblog.co.at/per-php-css-ein-logo-grostmoglich-in-einen-kreis-einsetzen/" aria-label="Mehr Informationen über Per PHP &#038; CSS ein Logo größtmöglich in einen Kreis einsetzen">weiterlesen</a>]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="size-full wp-image-4632 alignright" style="border: 1px solid #ff0000; padding: 0;" alt="Rechteckiges Logo" src="https://weblog.egm.at/wp-content/uploads/sites/5/howto1.png" width="122" height="121" srcset="https://weblog.co.at/wp-content/uploads/sites/5/howto1.png 122w, https://weblog.co.at/wp-content/uploads/sites/5/howto1-80x80.png 80w, https://weblog.co.at/wp-content/uploads/sites/5/howto1-36x36.png 36w" sizes="(max-width: 122px) 100vw, 122px" /> <img decoding="async" class="size-medium wp-image-4633 alignright" style="border: 1px solid #ff0000; padding: 0;" alt="Fast quadratisches Logo" src="https://weblog.egm.at/wp-content/uploads/sites/5/howto2.png" width="122" height="121" srcset="https://weblog.co.at/wp-content/uploads/sites/5/howto2.png 122w, https://weblog.co.at/wp-content/uploads/sites/5/howto2-80x80.png 80w, https://weblog.co.at/wp-content/uploads/sites/5/howto2-36x36.png 36w" sizes="(max-width: 122px) 100vw, 122px" />Für ein aktuelles WordPress-Kundenprojekt sollen Firmenlogos automatisiert vor einem kreisförmigen Hintergrund dargestellt werden. Die Aufgabenstellung war, die Logos trotz unterschiedlicher Seitenverhältnisse  größtmöglich in den Kreis einzupassen, ohne dass eines irgendwo über den Rand drüberschaut.  Mit Unterstufenmathematik recht einfach gelöst, nur wissen muss mans ;-)<span id="more-4631"></span></p>
<p>Das Grundsetup: ein quadratisches DIV mit dem Kreis als Hintergrund, vor diesem soll das Logo dargestellt werden. Das HTML/PHP dazu:</p>
<pre lang="php">&lt;div class="kreis"&gt;&lt;img style="position: absolute; left: ?px; top: ?px;" alt="" src="logo.jpg" width="?" height="?" /&gt;&lt;/div&gt;</pre>
<p>mit den einfachen CSS-Angaben</p>
<pre lang="css">.kreis {
position: relative;
background: url(kreis.png);
width: 122px;
height: 122px; }
.kreis img {
position: absolute; }</pre>
<p><img decoding="async" class="alignleft size-full wp-image-4640" style="border: 1px solid #ff0000; padding: 0px;" alt="gesuchte Werte" src="https://weblog.egm.at/wp-content/uploads/sites/5/howto3.png" width="122" height="121" srcset="https://weblog.co.at/wp-content/uploads/sites/5/howto3.png 122w, https://weblog.co.at/wp-content/uploads/sites/5/howto3-80x80.png 80w, https://weblog.co.at/wp-content/uploads/sites/5/howto3-36x36.png 36w" sizes="(max-width: 122px) 100vw, 122px" />Die Logos haben aber sehr unterschiedliche Seitenverhältnisse, somit ändert sich mit jedem dargestellten Logo die maximal mögliche Breite und Höhe sowie die Darstellungsposition. Ich benötigte also ein Codeschnipsel, das mir diese Werte je nach Logo korrekt ermittelt. Mit ein wenig Unterstufenmathematik war das kein Problem:</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-4651 alignright" style="border: 1px solid #ff0000; padding: 0px;" alt="Dreieck" src="https://weblog.egm.at/wp-content/uploads/sites/5/howto4a.png" width="122" height="121" srcset="https://weblog.co.at/wp-content/uploads/sites/5/howto4a.png 122w, https://weblog.co.at/wp-content/uploads/sites/5/howto4a-80x80.png 80w, https://weblog.co.at/wp-content/uploads/sites/5/howto4a-36x36.png 36w" sizes="auto, (max-width: 122px) 100vw, 122px" />Man braucht den Radius des Kreises sowie die Originalbreite und -höhe der Logodatei. Wenn man sich das Logo im Kreis anschaut, gibts ein rechtwinkeliges Dreieck, dessen Informationen wir verwenden können, um die neue Breite und Höhe sowie die Position des Logos auszurechnen. Das Dreieck besteht aus der Diagonale des Logos (die immer dem doppelten Kreisradius entspricht!) sowie der gesuchten Logobreite und der gesuchten Logohöhe.</p>
<p>Wenn wir das Originallogo hernehmen, findet sich dort dasselbe Dreieck, nur größer. Man darf daher zu Recht davon ausgehen, dass die Winkel in diesem Dreieck gleich denen in unserem gesuchten Dreieck im verkleinerten Logo sind. Im rechtwinkeligen Dreieck gilt:</p>
<p style="padding-left: 30px;"><em>tan Î± = Gegenkathete / Ankathete</em></p>
<p>Diese beiden haben wir &#8211; die Gegenkathete ist die Höhe des Logos, die Ankathete ist die Breite. Originalbreite &amp; -höhe des Logos kann man mit der PHP-Funktion <em>getimagesize()</em> auslesen.</p>
<p style="padding-left: 30px;"><em>tan Î± = h/b</em></p>
<p style="padding-left: 30px;"><em>Î± = arctan(h/b)</em></p>
<p>Damit haben wir den Winkel <em>Î±</em> &#8211; und dieser ist im Mini-Logo gleich wie in der Originaldatei! Und somit ist das Errechnen der restlichen Dreieckseiten im Mini-Logo wirklich einfach:</p>
<p style="padding-left: 30px;"><em>sin Î± = Gegenkathete / Hypotenuse</em></p>
<p>Die Hypotenuse ist der doppelte Kreisradius r (den wissen wir), die Gegenkathete ist die Logohöhe, die wir errechnen wollen. Somit ergibt sich:</p>
<p style="padding-left: 30px;"><em>sin Î± = h / (2 * r)</em></p>
<p style="padding-left: 30px;"><em>sin Î± * r * 2 = h </em></p>
<p>Somit haben wir die Höhe des verkleinerten Logos, die sich innerhalb des Kreises ausgeht.</p>
<p style="padding-left: 30px;"><em>cos Î± = Ankathete / Hypotenuse</em></p>
<p>Die Hypotenuse ist wiederum der doppelte Kreisradius r , die Ankathete ist die Logobreite. Somit ergibt sich:</p>
<p style="padding-left: 30px;"><em>cos Î± = b/ (2 *  r)</em></p>
<p style="padding-left: 30px;"><em>cos Î± * r * 2 = b</em></p>
<p>Sinnvollerweise sollte man Höhe und Breite noch via PHP mit <em>round()</em> behandeln, damit ganze Zahlen rauskommen.</p>
<p><img loading="lazy" decoding="async" class="alignleft size-full wp-image-4648" style="border: 1px solid #ff0000; padding: 0px;" alt="Position des Startpunktes" src="https://weblog.egm.at/wp-content/uploads/sites/5/howto5.png" width="122" height="121" srcset="https://weblog.co.at/wp-content/uploads/sites/5/howto5.png 122w, https://weblog.co.at/wp-content/uploads/sites/5/howto5-80x80.png 80w, https://weblog.co.at/wp-content/uploads/sites/5/howto5-36x36.png 36w" sizes="auto, (max-width: 122px) 100vw, 122px" />Um das Logo mit left und top zu positionieren, brauchen wir jetzt noch den Abstand des linken oberen Punktes des Logos vom linken oberen Punktes des Kreis-DIVs. Einfach: wir wissen den Kreisradius und die Logobreite und -höhe. Wie im Bild zu sehen ergibt sich also:</p>
<p style="padding-left: 30px;"><em>oberer Abstand = radius &#8211; h/2</em></p>
<p style="padding-left: 30px;"><em>linker Abstand = radius &#8211; b/2</em></p>
<p>Das Script um die Werte zu errechnen ist ziemlich einfach:</p>
<pre lang="php">// Zuerst $radius und Dateipfad zum Logo definieren
$logofile = "/dateipfad/zum/logo.jpg";
$radius = 58; // in Pixel, entspricht der halben Höhe des DIV.kreis

// Originalhoehe / Originalbreite per getimagesize auslesen
if(file_exists($logofile)) $logosize = getimagesize($logofile);
$originalbreite = $logosize[0];
$originalhoehe = $logosize[1];

$tanAlpha   = $originalhoehe/$originalbreite;
$alpha      = atan($tanAlpha);

$logopos['hoehe']     = round(sin($alpha)*2*$radius,0);
$logopos['breite']     = round(cos($alpha)*2*$radius,0);
$logopos['x']     = $radius-($logopos['breite']/2);
$logopos['y']     = $radius-($logopos['hoehe']/2);</pre>
<p>Die errechneten Werte nun noch dem Bild per PHP zuweisen &#8211; fertig:</p>
<pre lang="php">&lt;div class="kreis"&gt;&lt;img style="position: absolute; left: &lt;?php echo $logopos['x']; ?&gt;px; top: &lt;?php echo $logopos['y']; ?&gt;px;" src="logo.jpg" width="&lt;?php echo $logopos['breite']; ?&gt;" height="&lt;?php echo $logopos['hoehe']; ?&gt;" /&gt;&lt;/div&gt;</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.weblog.co.at/per-php-css-ein-logo-grostmoglich-in-einen-kreis-einsetzen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Lazy Loading (feed)

Served from: www.weblog.co.at @ 2026-07-30 22:13:59 by W3 Total Cache
-->