2011-11-23 47 views
2

我的PHP類返回小base64編碼圖像,鏈接如下:處理base64編碼與json_encode和PHP圖像

class Service 
{ 

    function getLogo() 
    { 
    $image = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c 
      QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwA"; 

    return 'data:image/png;base64,' . $image; 
    } 

} 

返回使用json_encode圖像將的$image每一行後添加\n

$service = new Service(); 
$response = array('name' => $service->getName(), 'logo' => $service->getLogo()); 
header('Content-type: application/json'); 
echo json_encode($response); 

如何正確處理?

+0

你嘗試http://php.net /manual/en/function.chop.php – CheeseConQueso

回答

5

你已經通過將它分成兩行來破壞你的base64數據。它應該是

function getLogo() { 
    $image = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4cQAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwA"; 

    return 'data:image/png;base64,' . $image; 
} 

沒有換行符。

+0

這將打破所有班級的格式化... – gremo

+2

不良數據或在屏幕上看起來醜陋......您的選擇。每次運行代碼時,我都會帶着一點醜陋,而不必去掉脣膏和睫毛膏。如果你確實被格式化了,那就執行'$ image =「xxx」; $ image。=「yyy」; $ image。=「zzz」'類型的操作,因此您可以將數據分成幾部分,不會有嵌入式換行符/空格。 –

+0

也許一個刪除'\ n'的函數可以做到這一點。 – gremo

2

答案由Marc B.給出。這只是一條評論。如果代碼格式化真的是對你很重要,你不能忍受排長隊(?爲什麼),你總是可以這樣格式化PHP:

class Service 
{ 

    function getLogo() 
    { 
    $image = 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c'; 
    $image .= 'QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwA'; 

    return 'data:image/png;base64,' . $image; 
    } 

}