php列印圖片
① 為什麼使用php GD庫圖片輸出中文字會出現亂碼
原因:
1、伺服器編碼原因。由於imagettftext函數字元串參數的默認編碼是UTF8,如果伺服器編碼不一致,而又沒有進行相應的字元編碼格式轉換,很容易出現使用gd庫輸出圖片時中文字元變成亂碼。
2、沒有選擇正確的TTF字體文件。使用gd庫時如果要輸出中文字元,需要選擇正確的TTF字體文件。
解決方法:
根據之前介紹的php gd庫產生中文亂碼的原理,解決php gd庫中文亂碼的方法其實很簡單。
1、建議整站使用UTF8編碼,如果你已使用的是GB2312或GBK編碼,請使用iconv或自定義的gb2312與utf8轉換函數進行字元編碼轉換。gb2312與utf8轉換函數請參考PHP Ajax傳值中文字元亂碼如何解決。
2、如果你是剛進行php環境搭建,建議將Apache配置文件中的默認字元集修改為UTF8,即AddDefaultCharset UTF8。
3、如果上述方法還不行,請檢查你在編譯gd庫時是否添加了–enable-gd-jis-conv選項,此選項是為了讓gd庫支持日文編碼的字型檔,請取消此選項並重新編譯。此方法我沒驗證過,估計主要是針對Unix下安裝配置php環境。Windows環境一般不會出現這種情況,似乎默認PHP配置文件是注釋掉的。
4、使用php gd庫產生中文亂碼的另一個原因是沒有選擇正確的TTF字體,你需要選擇支持中文的字體,常用的中文字體文件是simsun.ttc和simhei.ttf。
OK,只要按照上述方法,基本上使用php gd庫產生中文亂碼時都能夠解決。只要仔細排查其實gd庫的中文亂碼解決起來非常方便。
② php怎麼輸出背景透明的圖片
php可以使用GD庫或者ImageMagick工具生成png或者gif的背景透明圖片.推薦使用ImageMagick.
這里有範例 http://php.net/manual/en/imagick.examples-1.php
准備一張png圖片,放到php文件的目錄,運行看看效果.
<?php
/* Read the image */
$im = new Imagick("test.png");
/* Thumbnail the image */
$im->thumbnailImage(200, null);
/* Create a border for the image */
$im->borderImage(new ImagickPixel("white"), 5, 5);
/* Clone the image and flip it */
$reflection = $im->clone();
$reflection->flipImage();
/* Create gradient. It will be overlayed on the reflection */
$gradient = new Imagick();
/* Gradient needs to be large enough for the image and the borders */
$gradient->newPseudoImage($reflection->getImageWidth() + 10, $reflection->getImageHeight() + 10, "gradient:transparent-black");
/* Composite the gradient on the reflection */
$reflection->compositeImage($gradient, imagick::COMPOSITE_OVER, 0, 0);
/* Add some opacity. Requires ImageMagick 6.2.9 or later */
$reflection->setImageOpacity( 0.3 );
/* Create an empty canvas */
$canvas = new Imagick();
/* Canvas needs to be large enough to hold the both images */
$width = $im->getImageWidth() + 40;
$height = ($im->getImageHeight() * 2) + 30;
$canvas->newImage($width, $height, new ImagickPixel("black"));
$canvas->setImageFormat("png");
/* Composite the original image and the reflection on the canvas */
$canvas->compositeImage($im, imagick::COMPOSITE_OVER, 20, 10);
$canvas->compositeImage($reflection, imagick::COMPOSITE_OVER, 20, $im->getImageHeight() + 10);
/* Output the image*/
header("Content-Type: image/png");
echo $canvas;
?>
③ php preg_match_all()函數怎麼匹配文章中的所有圖片鏈接並列印出來
<?php
$Html=@file_get_contents('5.html');
$Html=preg_replace('/s{2,}| /i','',$Html);//過濾掉換行和2個以上的空格
preg_match_all('/<imgs+[^>]*srcs?=s?['|"]([^'|"]*)['|"]/i',$Html,$Image);
print_r($Image);
圖片,通常情況下,無論有什麼屬性,他最基本的有2點,<img開頭, 有src屬性!
那麼只要匹配到這2個特徵,其他的就別管他,這樣,所有圖片就出來了
④ PHP怎麼提取內容編輯器裡面的圖片。
代悄答含碼如下舉源:
⑤ 用php代碼怎麼以背景圖片加上文字生成新的圖片,然後在標題處絕對調用該圖片
<?php
ob_clean(); //清除輸出緩存
header("Content-type:image/jpeg"); //設置輸出類型
$img="images/test.jpg"; //背景圖片名
if(isset($_GET["img"]))$img=$_GET["img"]; //也可以通過img參數傳入
$im=imagecreatefromjpeg($img); //讀入背景圖片
$text="文字內容"; //要加上的文字內容
if(isset($_GET["text"]))$text=$_GET["text"]; //也可以通過text參數傳入
$fontFile="xxx.ttf"; //字體文件名,必須要
$fontSize=36; //字體尺寸
$fontColor=ImageColorAllocate($im,0,0,0); //字體顏色,這里是黑色
$textAngle=0; //文字顯示的角度,0表示水平顯示
$textLeft=20; //文字顯示的x坐標
$textTop=60; //文字顯示的y坐標
imagefttext($im,$fontSize,$textAngle,$textLeft,$textTop,$fontColor,$fontFile,$text); //把文字覆蓋到圖片上
Imagejpeg($im); //輸出圖片
ImageDestroy($im); //銷毀圖片
?>
把以上文字保存為php文件,比如 img.php
然後在需要調用圖片的地方用 <img src="img.php?img=背景圖片文件路徑&text=要加上的文字"/> 來調用
比如 <img src="img.php?img=images/back.jpg&text=你好"/>
⑥ php循環輸出輪播圖問題,通過img1=new Image ();img1.src='images/1.jpg';輸出5個img後面數字自動加一
<script>
varwidths=967;//圖片寬
varheights=246;//高
varcounts=5;//圖片數量
for(i=1;i++;i<5){
img[i]=newImage();img[i].src='images/'+i+'.jpg';//圖片的位置
url[i]=newImage();url[i].src='index.php';//圖片鏈接地址
}
</script>
//用這樣的形式,如果要自增函數名有點麻煩