在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 網頁設計教程 > 詳細頁面

php中如何使用ImageMagick生成base64圖片(代碼)

php中如何使用ImageMagick生成base64圖片(代碼)

更新時間:2025-12-04 文章作者:未知 信息來源:網絡 閱讀次數:

網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立...
網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。
本篇文章給大家帶來的內容是關于php中如何使用ImageMagick生成base64圖片(代碼) ,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

最近的PHP項目中,需要用到畫圖和圖片拼接效果,這里是一些開發過程里用到的一些點還有就是一些踩過的坑。通過ImageMagick生成base64圖片格式,為前端所使用。

一些需要的知識點

PHP將圖片轉base64編碼以及base64圖片轉換為圖片并保存代碼

圖片轉base64編碼

/*圖片轉換為 base64格式編碼*/
$img = 'uploads/about.png';
$base64_img = base64EncodeImage($img);
echo '<img src="' . $base64_img . '" />';
 
function base64EncodeImage ($image_file) {
    $base64_image = '';
    $image_info = getimagesize($image_file);
    $image_data = fread(fopen($image_file, 'r'), filesize($image_file));
    $base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
    return $base64_image;
}

base64圖片轉換為圖片并保存

/*  base64格式編碼轉換為圖片并保存對應文件夾 */
function base64_image_content($base64_image_content,$path){
    //匹配出圖片的格式
    if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
        $type = $result[2];
        $new_file = $path."/".date('Ymd',time())."/";
        if(!file_exists($new_file)){
            //檢查是否有該文件夾,如果沒有就創建,并給予最高權限
            mkdir($new_file, 0700);
        }
        $new_file = $new_file.time().".{$type}";
        if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){
            return '/'.$new_file;
        }else{
            return false;
        }
    }else{
        return false;
    }
}
 
echo base64_image_content($base64_img,"uploads/");

base64

Base64是一種用64個字符來表示任意二進制數據的方法。
Base64的原理很簡單,首先,準備一個包含64個字符的數組:

['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/']
然后,對二進制數據進行處理,每3個字節一組,一共是3x8=24bit,劃為4組,每組正好6個bit

如果要編碼的二進制數據不是3的倍數,最后會剩下1個或2個字節怎么辦?Base64用x00字節在末尾補足后,再在編碼的末尾加上1個或2個=號,表示補了多少字節,解碼的時候,會自動去掉。

使用jpg圖片體積要比png小
使用PHP的Imagick類進行圖像的操作

Imagick具體操作

(1).創建一個底圖,寬750px,高1046px,白色背景,格式為jpg的圖片

// 初始化一個畫板
        $img =new Imagick();
        $img->newImage(750,1046,'white','jpg') ;

(2).在底圖上添加需求圖片

前提是我們已經知道了需要合并的圖片鏈接地址

$item_img='https://img.alicdn.com/bao/uploaded/i1/1750208593/TB1rgM3hhtnkeRjSZSgXXXAuXXa_!!0-item_pic.jpg'

第一步:實例化圖片
$imgtwo = new Imagick($item_img);

第二步:設置添加圖片的大小
$imgtwo->resizeImage(750,764,Imagick::FILTER_LANCZOS,1);

關于resizeImage參數說明
    bool Imagick::resizeImage ( int $columns , int $rows , int $filter , float $blur [, bool $bestfit = false ] )

參數:
  ● columns 圖片的寬度
  ● rows 圖片高度
  ● filter 過濾器,用于過濾圖片,有高斯filte根據情況而定
  ● blur blur=1 為虛化, blur =-1 為銳化

第三步:與底圖合并
$img->compositeImage($imgtwo,$imgtwo->getImageCompose(),0,0);

使用compositeImage();
    bool Imagick::compositeImage ( Imagick $composite_object , int $composite , int $x , int $y [, int $channel = Imagick::CHANNEL_ALL ] )

參數:
  ● composite_object :用于合并的圖片的Imagick對象
  ● composite:合并操作,定義操作常量。 具體請查看 合并操作常量列表
  ● x:相對圖像頂點左上位置(0,0)的橫坐標
  ● y:相對圖像頂點左上位置(0,0)的縱坐標
  ● channel:通過傳入一個通道常量,來開啟通道模式。為了支持多個通道,可以通過二進制運算的操作來合并多個通道常量。

到這里就可以得到一個合并的圖片了
1、加一個header信息,可以直接在網頁上查看圖片
    header("Content-Type: img/png");
    echo $img;
2、可以把圖片在指定目錄中生成,在指定目錄下生成為img.png
    $file="./img.png";
    $img->writeImage($file);


我這里是這樣處理:
    header ( 'Content-type: ' . strtolower ($img->getImageFormat ()) );
    $type = strtolower($img->getImageFormat());
    $dest_img='/data/tmp/' . md5(microtime(true)).'.'.$type;    //要生成的圖片的路徑,隨機生成圖片名稱

(3).圖片上拼接文字

寫入文字以添加店鋪文字為例,逐步完成文字的寫入。

    $shop_title='測試店鋪';
    // 添加店鋪文字
    $drawQr = new ImagickDraw(); // 實例化ImagickDraw
    $drawQr -> setFillColor(new ImagickPixel('#999999')); // 顏色
    $drawQr -> setFontSize('24'); // 大小
    $drawQr -> setFont('../../conf/Microsoftyahei.ttf'); // 字體
    $drawQr -> setTextAlignment(Imagick::ALIGN_LEFT); // 字體方向
    // ps: Imagick::ALIGN_RIGHT 朝右邊    Imagick::ALIGN_LEFT 左邊   Imagick::ALIGN_CENTER 中間
    $drawQr -> setTextEncoding("utf-8"); // 字體編碼
    $drawQr -> annotation(114,990,$shop_title); // 畫出文字
    $img -> drawImage($drawQr);  // 畫在地板上

詳細解讀:

1、實例化ImagickDraw類:

$drawQr = new ImagickDraw();

2、設置字體顏色

$drawQr -> setFillColor(new ImagickPixel('#999999'));

3、設置字體大小

$drawQr -> setFontSize('24');

4、設置字體格式

$drawQr -> setFont('../../conf/Microsoftyahei.ttf');

5、設置字體方向

$draw->setTextAlignment(Imagick::ALIGN_RIGHT);

ps: Imagick::ALIGN_RIGHT 朝右邊 Imagick::ALIGN_LEFT 左邊 Imagick::ALIGN_CENTER 中間

6、設置字體編碼

$drawQr -> setTextEncoding("utf-8");

7、畫出文字

$drawQr -> annotation(114,990,$shop_title);

8、在底圖上寫入字體

$img -> drawImage($drawQr);

寫入文字這個地方的一些坑:

沒有設置字體格式時,中文字會解析錯誤
(英文沒有問題)

1194728351-5b9a125260081_articlex.png

(漢字解析失敗)

1919625869-5b9a12527be91_articlex.png

(設置字體格式正常顯示)

4066479041-5b9a1252748db_articlex.png

(4).圖片base64導出

最終得到的圖片我們組要以base64的格式傳遞給前端,進行以下操作,把我們最后拼接的到的圖片base64轉換輸出。

    $dest_img='/data/tmp/' . md5(microtime(true)).'.'.$type; //要生成的圖片的路徑
    $Return = array();
    // *圖片轉換為 base64格式編碼*
    $base64_image = '';
    $image_info = getimagesize($dest_img);
    $image_data = fread(fopen($dest_img, 'r'), filesize($dest_img));
    $base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
    $Return['data']=$base64_image;
    return  $Return;

$base64_image就是base64格式的圖片。

需要注意的是前端得到的額base64數據里包含有'\r\n'回車字符,需要特殊處理才可以正確顯示圖片。

2665486350-5b9a1253b1c6e_articlex.png

最后會得到的合并圖片,可以調整拼接圖片大小得到不同的圖片。

相關推薦:

圖片上傳并使用ImageMagick生成縮略圖

php實現圖片上傳并利用ImageMagick生成縮略圖,

以上就是php中如何使用ImageMagick生成base64圖片(代碼)的詳細內容,更多請關注php中文網其它相關文章!


網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 老司机午夜免费福利视频| 水蜜桃在线免费观看| 青青草免费在线视频观看| 成年网站在线播放| 男人天堂网视频| 玩弄中年熟妇正在播放| 日本在线xxx| 久久久噜噜噜www成人网| 久久人人爽人人爽人人av| 男人c女人视频| 中文字幕乱码免费| 91.com在线| 国产精品专区在线| 少妇性饥渴无码a区免费| 激情综合网婷婷| 一区二区三区 欧美| 尤物国产在线观看| 国内精品国产三级国产aⅴ久| japanese在线视频| 欧美国产视频一区| 日本欧美黄色片| 久草青青在线观看| 中文字幕 日韩 欧美| 五月天综合婷婷| 久久国产亚洲精品无码| 欧美伦理片在线看| 成人短视频在线看| 春日野结衣av| 激情文学亚洲色图| 成人在线观看你懂的| 91欧美视频在线| 日本一本中文字幕| 天天干天天草天天| 91成人在线观看喷潮教学| 天堂网在线免费观看| www.在线观看av| 国产91色在线观看| 男女啪啪免费视频网站| 中文字幕网av| 国产91在线免费| 欧美日韩一区二区三区电影| 日韩欧美xxxx| 真人抽搐一进一出视频| 男女污污视频网站| 精品一卡二卡三卡| 国产无限制自拍| 欧美一级免费在线| 久久久久久久少妇| 日韩av一二三四区| 国产欧美123| 超碰91在线播放| 欧美精品第三页| 内射国产内射夫妻免费频道| 久久久成人精品一区二区三区| 国产裸体免费无遮挡| 日韩日韩日韩日韩日韩| 国产手机视频在线观看| 中文字幕亚洲乱码| 在线观看免费成人av| 男人靠女人免费视频网站| 福利视频免费在线观看| 亚洲国产一二三精品无码| 国产又粗又硬又长| 久久出品必属精品| 色姑娘综合天天| 艳母动漫在线免费观看| 红桃视频一区二区三区免费| 五月天开心婷婷| 国内自拍第二页| 亚洲一区精品视频在线观看| 中文字幕在线综合| www.久久久久久久久久久| 天天摸天天舔天天操| 特黄视频免费观看| www.久久com| 国产精品自拍合集| 国产v片免费观看| 北条麻妃视频在线| www.这里只有精品| 潘金莲一级淫片aaaaa免费看| 国产欧美自拍视频| 国产高清不卡无码视频| 波多野结衣综合网| 精品国产成人av在线免| 久久国产激情视频| 可以在线看黄的网站| 国产美女主播在线播放| 久久精品网站视频| 三日本三级少妇三级99| www插插插无码视频网站| 国产成人a亚洲精v品无码| 日韩爱爱小视频| 久久久国内精品| 午夜免费精品视频| 中文字幕精品在线播放| 麻豆tv在线播放| 在线观看国产福利| 国产一级做a爰片久久毛片男| 欧美一区二区中文字幕| 日本在线一二三区| 成人性免费视频| 交换做爰国语对白| 欧美精品第三页| 中文精品无码中文字幕无码专区| 国产精品人人妻人人爽人人牛| 午夜影院免费版| 成人免费在线小视频| 国产一级大片免费看| 天天爽天天爽夜夜爽| 给我免费播放片在线观看| av亚洲天堂网| 亚洲色成人一区二区三区小说| 三级黄色片免费看| 成年人网站大全| 日韩国产一级片| 91黄色在线看| 国产又粗又长又爽视频| 色婷婷激情视频| 国内外成人免费在线视频| 青青青免费在线| 国产青草视频在线观看| 日韩a一级欧美一级| 一级黄色香蕉视频| 欧美激情国产精品日韩| heyzo亚洲| 97干在线视频| 日韩精品在线中文字幕| 日本老太婆做爰视频| 极品粉嫩美女露脸啪啪| 国产一伦一伦一伦| 一级黄色特级片| 日韩成人av免费| 天堂av手机在线| 国产精品igao网网址不卡| 8x8x成人免费视频| 天堂av2020| 九一免费在线观看| 日本中文字幕在线视频观看| 女人帮男人橹视频播放| 久久99中文字幕| 国产精品一区二区免费在线观看| 黄色成人在线看| 无码少妇一区二区三区芒果| 爆乳熟妇一区二区三区霸乳| www.99av.com| 狠狠操狠狠干视频| 97超碰在线视| 国产二区视频在线播放| 91网址在线播放| 天天爱天天做天天操| 国产在线视频综合| 高清在线观看免费| 一区二区三区 日韩| 一级做a爱视频| 欧美日韩黄色一级片| 91女神在线观看| 奇米影视亚洲色图| 欧美黄色性生活| 400部精品国偷自产在线观看| 2019日韩中文字幕mv| 成人免费毛片播放| 国产精品久久国产| 国产成人久久婷婷精品流白浆| www.午夜av| 久草青青在线观看| 无码人妻精品一区二区三区99v| 一女被多男玩喷潮视频| 精品国产鲁一鲁一区二区三区| 妞干网在线观看视频| 久久6免费视频| 凹凸国产熟女精品视频| 免费国产成人看片在线| 日韩小视频在线播放| 女人色极品影院| 污污污污污污www网站免费| av观看免费在线| 日韩精品免费一区| 亚洲精品手机在线观看| 国产极品尤物在线| 视色,视色影院,视色影库,视色网| 日韩av资源在线| 亚洲人精品午夜射精日韩 | 男女私大尺度视频| 97超碰人人爱| 手机在线国产视频| 亚洲国产精品毛片av不卡在线| 免费特级黄色片| 亚洲高潮无码久久| 日本中文字幕在线不卡| 亚洲福利精品视频| 日本成人在线免费视频| 欧美精品99久久| 久色视频在线播放| www精品久久| 国产中文字幕二区| 国产3p露脸普通话对白| 激情五月六月婷婷| 欧美国产日韩激情| 黄色www网站| 国语对白做受xxxxx在线中国|