我可以更改代码以将上载的图像保存在公共目录中,但是当我想将其上载的图像作为公司名称保存在文件夹中时,不能更改。例如有效的例子:
/public/company_img/<filename>.jpg
Run Code Online (Sandbox Code Playgroud)
如果用户的公司名称为Foo,则我在保存时需要此保存保存上载的图像:
/public/company_img/foo/<filename>.jpg
Run Code Online (Sandbox Code Playgroud)
这是在我的控制器中:
$image = Input::file('company_logo');
$filename = $image->getClientOriginalName();
$path = public_path('company_img/' . Auth::user()->company_name . '/' . $filename);
// I am saying to create the dir if it's not there.
File::exists($path) or File::makeDirectory($path); // this seems to be the issue
// saving the file
Image::make($image->getRealPath())->resize('280', '200')->save($path);
Run Code Online (Sandbox Code Playgroud)
只需查看一下,您就可以轻松看到它在做什么。我的日志什么都没有显示,并且点击更新按钮后浏览器变为空白。有任何想法吗
我正在使用php的干预来进行图像处理.是否可以通过这样的变量将字体大小和颜色应用于文本?我已计算出$ fontsize和$ color,但它表示未定义的变量
$img->text($string, $item['x'], $top, function($font) {
$font->file('assets/fonts/Roboto-Medium.ttf');
$font->size($fontsize);
$font->color($color);
$font->align('left');
$font->valign('top');
});
Run Code Online (Sandbox Code Playgroud) 我已经安装了Laravel 5.2和Intervention,现在它在项目的composer.json文件中.
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.2.*",
"intervention/image": "^2.3"
},
Run Code Online (Sandbox Code Playgroud)
阅读完教程后,它会提到一个Image.php文件,一旦安装了Intervention,它应该位于项目内的config文件夹中.我相信我已经正确安装了干预,但是当我尝试使用干预功能时,它不起作用.
当我尝试使用这行代码时,我得到了这个错误
$resizedImg = Image::make($path)->resize(200,200);
C:\xampp\htdocs\socialNet\vendor\laravel\framework\src\Illuminate\Container\Container.php line 738:
Run Code Online (Sandbox Code Playgroud)
类图像不存在
在我使用此函数的文件中,我包含此Use语句
use Intervention\Image\Facades\Image as Image;
Run Code Online (Sandbox Code Playgroud) 我想使用Intervention两次调整图像大小.
我现在有这个:
$img = Image::make($image_url);
$img_path = public_path() . '/images/';
$img->fit(500, 250);
$img->save($img_path . '/img_250.jpg');
$img = Image::make($image_url);
$img->fit(100, 100);
$img->save($img_path . '/img_100.jpg');
Run Code Online (Sandbox Code Playgroud)
如您所见,我首先要将原始图像的大小调整为500x250,然后我想再次将原始图像(不是500x250图像)调整为100x100.
没有Image::make()两次打电话有没有办法做到这一点?
我正在使用laravel 5和干预,并希望在通过表单上传图像时存储多种尺寸的图像.任何人都可以指导我
在Intervention Image的网站上,它说为了安装最新版本,我必须运行以下命令:
php composer.phar require intervention/image
Run Code Online (Sandbox Code Playgroud)
我使用的是Windows 8.1,我猜这不会起作用.我已经尝试了,它说:无法打开输入文件:composer.phar
我错过了一些非常容易的事吗?
我正在使用Laravel 5.4设置一个表单,用户可以在其中输入食物名称及其图像。尝试上传PNG或JPG图片时,出现以下内容Validation Error:
该图像必须是图像。
如果删除图像验证,则会得到FatalErrorException:
在null上调用成员函数getClientOriginalExtension()
这是Intervention /图片库提供的帮助程序功能。这可能意味着该图像根本没有上传。
FORM
<form action="/hq/foods" method="POST">
{{ csrf_field() }}
<input type="text" name="name">
<input type="file" name="image">
<button type="submit" class="btn btn-success ">
ADD FOOD ITEM
</button>
</form>
Run Code Online (Sandbox Code Playgroud)
CONTROLLER
public function store(Request $request) {
$this->validate($request, [
'name' => 'required|min:2|max:255',
'image' => 'required|image'
]);
$food_category = FoodCategory::find($request->food_category_id);
$food = new Food;
$food->name = $request->name;
$image = $request->file('image');
$filename = time() . '.' . $image->getClientOriginalExtension();
$location = public_path('img/foods/' . $filename);
Image::make($image)->resize(800, 400)->save($location);
$food->image = $filename; …Run Code Online (Sandbox Code Playgroud) 在我的开发服务器上,一切都很好,我通过表单上传的图像被转换
Image::make($img)->encode('webp');
Run Code Online (Sandbox Code Playgroud)
当我去检查它时,它是完美的.
在我的生产服务器上,事情有点不同,例如,如果我上传一个方形图像(完全红色),在编码后我最终得到一个褐色/金色图像和其他图像我最终得到一个空白区域.
由于正在创建图像,我认为编码时存在问题,可能是我错过了一些配置.
dev服务器上的GD库版本为2.4.1,生产版本为2.1.1
所有东西都在Ubuntu 17.10上运行,开发时间为16.04.
Laravel版本5.5
编辑
开发和生产方面的PHP 7.0版
编辑2
这是出现的那种形象
我正在尝试上传动画 gif 作为用户头像。这些图像通过javascript转换为base64,然后使用图像干预上传。
$img = Image::make(file_get_contents($file));
$mime = $img->mime();
if ($mime == 'image/jpeg')
$ext= '.jpg';
elseif ($mime == 'image/png')
$ext= '.png';
elseif ($mime == 'image/gif')
$ext= '.gif';
elseif($mime == 'image/x-icon')
$ext = '.ico';
elseif($mime == 'image/bmp')
$ext = '.bmp';
else {
$ext = '.jpg';
}
$name = time().$ext;
$path = public_path("images/$controller");
File::isDirectory($path) or File::makeDirectory($path);
if(property_exists($field, 'size') && !$ext=='.gif') {
$field->size = explode('*',$field->size);
if($img->resize($field->size[0], $field->size[1])->save("$path/$name")) {
$data[$key] = $name;
} else {
$data[$key] = null;
}
} else {
if($img->save("$path/$name")) { …Run Code Online (Sandbox Code Playgroud) 我在Laravel 中使用http://image.intervention.io/来调整图像大小,然后再将它们存储在 AWS S3 存储桶中。这是适用的代码:
$extension = $image->extension();
$realPath = $image->getRealPath();
$resizedImage = Image::make($realPath) // ->resize(255, 255); // resize or not, make() seems to always return an empty Image
$file_path = "posts/$post->id/images/image-$post->id-num-$pictureCount.$extension/";
$path = Storage::disk('s3')->put($file_path, $resizedImage->__toString(), ['visibility' => 'public']);
Run Code Online (Sandbox Code Playgroud)
调试时($path设置了线路上的断点),我可以看到它$realPath包含一个类似的值/private/var/folders/23/jl2dytp168g9g9s5j51w2m780000gn/T/php9047Fh- 去那里我可以看到我正在尝试的图像make()/ resize()。
该$resizedImage对象具有以下字段:
[encoded] =>
[mime] => image/jpeg
[dirname] => /private/var/folders/23/jl2dytp168g9g9s5j51w2m780000gn/T
[basename] => phpTNRdXe
[extension] =>
[filename] => phpTNRdXe
Run Code Online (Sandbox Code Playgroud)
我猜编码的属性应该包含类似 base 64 图像数据的内容?
检查 AWS S3 存储桶中的图像时,它总是作为 …
intervention ×10
laravel ×8
php ×7
laravel-5 ×6
gd ×2
laravel-5.2 ×2
base64 ×1
image ×1
laravel-5.4 ×1
laravel-5.5 ×1
php-7 ×1