我有多個圖片 - 保存爲Base64編碼字符串,現在我想調整這些圖片,讓他們的縮略圖...調整大小的base64圖片
最好將使用Javascript(節點服務器)來調整它們的大小,但也可以用php調整它們的大小。
由於在node.js中提前
我有多個圖片 - 保存爲Base64編碼字符串,現在我想調整這些圖片,讓他們的縮略圖...調整大小的base64圖片
最好將使用Javascript(節點服務器)來調整它們的大小,但也可以用php調整它們的大小。
由於在node.js中提前
我同意the method from Jon Hanna:你解析的Base64code然後將其加載到重採樣前的GD圖像。然而,要將它作爲數據取回,它並不像我那麼容易。在GAE的php中,需要通過在php.ini文件中設置output_buffering = "On"
來獲得enable output buffering。
下面我詳細解釋了一步。
此文檔被取爲參考使用Base64code的解析,以創建圖像資源:http://php.net/manual/en/function.imagecreatefromstring.php
// Create image resource from Base64code
$data64 = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
. 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
. 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
. '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$image = imagecreatefromstring(base64_decode($data64));
這是可以直接付諸重新取樣功能的圖像資源:http://php.net/manual/en/function.imagecopyresampled.php
// Resample
$image_p = imagecreatetruecolor($new_w, $new_h);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_w, $new_h, $org_w, $org_h);
結果也是一個圖像資源。爲了將其作爲數據,我們需要Buffering。
見 how to create a base64encoded string from image resource
// Buffering
ob_start();
imagepng($image_p);
$data = ob_get_contents();
ob_end_clean();
使用文檔下面我設置my project一個GCS桶的網站,所以我可以商店&顯示它直接: https://cloud.google.com/storage/docs/website-configuration#tips
//Store & Display
$context = stream_context_create([
'gs' =>[
'acl'=> 'public-read',
'Content-Type' => 'image/jpeg',
'enable_cache' => true,
'enable_optimistic_cache' => true,
'read_cache_expiry_seconds' => 300,
]
]);
file_put_contents("gs://mybucket/resample/image.jpeg", $data, false, $context);
header("Location: http://mybucket/resample/image.jpeg");
值得指出的是'imagecopyresampled()'比'imagecopyresized()'產生更好的質量,因爲它插值了。 – garrettlynch
好吧,我沒有直寫在我的服務器上的權利 - 我怎麼能連接這個拇指到我的node.js應用程序?任何想法? –
這是屬於「不知道如何在node.js中做到這一點(或者說,任何事情)」的問題。希望其他人可能有一個好主意。 –
尋找這個答案一2天,現在... 通常它會很好地工作節點 - 但在我節點應用程序我有沒有寫權限,太......,吸 –