我正在使用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
解决方法:
您需要使用ob_start捕获缓冲区,例如:
ob_start();
imagejpeg($tmp_img);
$i = ob_get_clean();
$i是您的图像斑点
标签:azure,upload,php
来源: https://codeday.me/bug/20191101/1982049.html