4

Microsoft Azure クラウドを使用していて、そこに画像をアップロードする必要があります。そのクラス アップロード メソッド putBlob() および putBlobData() は、データ自体 (リソースではなく) またはディレクトリ文字列のいずれかを引数として必要としますが、画像が実際に Blob に書き込まれるまでは、いずれも使用できません。

$fp = fopen($tmp_name, 'r');
$data = fread($fp, filesize($tmp_name));
fclose($fp);

//Setup watermark destination
$new_watermarked_image_name = "watermark.jpg";

// Create image resources
$image = imagecreatefromstring($data); 
$watermark = imagecreatefrompng('images/watermark_large.png');
$copyright = imagecreatefrompng('images/copyright.png');

// Merge image resource s
$image = overlay_watermark_full_size($image, $watermark);  
$image = overlay_watermark_lower_right($image, $copyright);
imagejpeg($image, $new_watermarked_image_name, 100);

//put original image
$AzureStorageBlob->putBlob("uploads", "name", $tmp_name);
//put watermarked image
$AzureStorageBlob->putBlobData("uploads", "name", ?); // ? needs to be data
4

2 に答える 2

5

次のように、ob_start でバッファをキャプチャする必要があります。

ob_start();
imagejpeg($tmp_img);
$i = ob_get_clean(); 

$i は画像ブロブです

于 2012-06-10T17:12:29.777 に答える
0

最新のSDKforPHPを使用すると、画像ストリームを渡すだけでこれを実行できます。

$image_stream = fopen($tmp_name, 'r');
// Check README.md of how to create $blobRestProxy
$blobRestProxy->createBlockBlob('container_name', 'my_image', $image_stream);

他にご不明な点がありましたらお知らせください

于 2012-06-10T17:45:52.663 に答える