我正在搞一些SVG和PHP代碼,我發現了一個令人討厭的問題,我無法解決。
我有一個SVG圖像,其中有一些形狀。通過fill
屬性和def
標籤,我可以使用簡單的GET變量將紋理成功應用到所需的形狀。因此,這是我的SVG:PHP沒有加載SVG圖案紋理
而且,如果我想申請任何紋理,我可以完全看到它:
那麼,問題是,當我嵌入帶有img標籤的圖像,我看不到紋理。
我配置了一個PHP文件,所以如果我將一些值傳遞給文件,我可以改變顏色和紋理。例如:?
- test.php的顏色= FF0000會使我的形象與紅方
- test.php的拍拍= PAT1會使我的形象與圖案我有一個模式?文件夾
這個偉大的工程,如果我想顯示圖像,但是,如果我把它放在一個img
標籤內,它僅適用於顏色,所以:
<img src="test.php?color=FF0000">
將成功地使我的形象有一個紅色的方形<img src="test.php?pat=pat1">
將不會呈現我的質感;它會顯示一個白色
這是我test.php
文件(PHP與SVG代碼)的平方:
<?php
header('Content-type: image/svg+xml');
echo '<?xml version="1.0" encoding="utf-8"?>';
?>
<svg version="1.1" id="figure" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 612 345" style="enable-background:new 0 0 612 345;" xml:space="preserve">
<defs>
<pattern id="img1" patternUnits="userSpaceOnUse" width="100" height="100">
<image xlink:href="img/patterns/<?=isset($_GET['pat']) ? $_GET['pat'] : 'pat1'?>.jpg" x="0" y="0" width="100" height="100" />
</pattern>
</defs>
<style type="text/css">
.st0{stroke:#000000;stroke-miterlimit:10;}
.st1{fill:#62C3A9;stroke:#000000;stroke-miterlimit:10;}
.st2{fill:#B8D433;stroke:#000000;stroke-miterlimit:10;}
</style>
<rect fill="<?=isset($_GET['color']) ? '#' . $_GET['color'] : 'url(#img1)'?>" id="square" x="142.3" y="63" class="st0" width="125.3" height="167.3"/>
<ellipse id="round" class="st1" cx="319.3" cy="134.7" rx="47" ry="53"/>
<polygon id="polygon" class="st2" points="327,237.7 261.5,268.4 202.2,227.1 208.3,155 273.8,124.3 333.1,165.6 "/>
</svg>
我缺少什麼?我一直在嘗試一個小時來找到一個解決方案,但我還沒有找到任何有用的東西。
這是預覽我得到的Chrome瀏覽器開發控制檯上,當我檢查圖像,在左邊用顏色和與紋理的權利。
謝謝!
那麼肯定它的瀏覽器不是PHP導致的問題? – RiggsFolly