想从自己的服务器拍摄图像旋转特定角度并保存图像。
图片文件$filename = 'kitten_rotated.jpg';
使用echo '<img src='.$filename.'>';
我会看到图片。
然后
$original = imagecreatefromjpeg($filename);
$angle = 90.0;
$rotated = imagerotate($original, $angle, 0);
根据此https://stackoverflow.com/a/3693075/2118559答案尝试创建图片文件
$output = 'google.com.jpg';
如果我使用新文件名保存相同的图像,则全部工作
file_put_contents( $output, file_get_contents($filename) );
但如果我尝试保存旋转的图像,那么file_put_contents(): supplied resource is not a valid stream resource
。
file_put_contents( $output, $rotated );
此处https://stackoverflow.com/a/12185462/2118559已阅读$export is going to be a GD image handle. It is NOT something you can simply dump out to a file and expect to get a JPG or PNG image..
,但无法理解如何在该答案中使用该代码。
如何从$rotated
创建图像文件?
尝试根据此http://php.net/manual/en/function.imagecreatefromstring.php
进行实验$fh = fopen( 'some_name.png' , 'w') or die("can't open file");
fwrite($fh, $data );
fclose($fh);
这是否意味着需要像
这样的东西$data = base64_encode($rotated);
然后写入新文件?
答案 0 :(得分:2)
我没有对此进行测试,但我认为您需要先将图像编码为base 64。
如果从任何图像URL检查字符串,您会在哈希之前看到data:image/png;base64,
。将其添加到图像字符串并保存。
答案 1 :(得分:1)
根据您已有的功能,这是一个可能有用的功能:
// Function settings:
// 1) Original file
// 2) Angle to rotate
// 3) Output destination (false will output to browser)
function RotateJpg($filename = '',$angle = 0,$savename = false)
{
// Your original file
$original = imagecreatefromjpeg($filename);
// Rotate
$rotated = imagerotate($original, $angle, 0);
// If you have no destination, save to browser
if($savename == false) {
header('Content-Type: image/jpeg');
imagejpeg($rotated);
}
else
// Save to a directory with a new filename
imagejpeg($rotated,$savename);
// Standard destroy command
imagedestroy($rotated);
}
// Base image
$filename = 'http://upload.wikimedia.org/wikipedia/commons/b/b4/JPEG_example_JPG_RIP_100.jpg';
// Destination, including document root (you may have a defined root to use)
$saveto = $_SERVER['DOCUMENT_ROOT']."/images/test.jpg";
// Apply function
RotateJpg($filename,90,$saveto);
答案 2 :(得分:1)
如果要保存图像,只需使用GD库函数之一:imagepng()或imagepng()。
imagerotate()返回图像资源,所以这不像字符串。
在您的情况下,只需保存旋转图像:
imagejpg($rotated, $output);
现在您可以使用$ output变量作为新文件名,以便像以前一样包含在视图中:
echo '<img src='.$output.'>';
请勿忘记在您保存图片的目录中包含适当的权限。