我正在使用Laravel图像处理包干预图像.
我想将裁剪后的图像保存到变量然后再保存到DB但是在文档中找不到如何将结果导出为字符串.这是我的代码:
$img = Image::make($uploadedImage);
$img->crop(160, 210);
$imageEncoded = // ?
Run Code Online (Sandbox Code Playgroud)
有save(),但它只保存到文件.
如何将修改后的干预图像导出到字符串变量?(data:image/jpeg;base64,…)
在我的本地开发中,我使用下面显示的代码,它完美无缺,
但当我将网站上传到我的共享主机时,一切正常,除了我的文件上传.我已经确定问题涉及到
->getRealPath(),当dd();我得到这条道路时:
/data/sites/web/christophvhbe/tmp
哪个在我的托管上不存在.但我发现临时图像存储在我的托管位置,tmp/位于此处:http://gyazo.com/e0199718324119109a4ff66321414e12.
如何将->getRealPath()值更改为正确的值?
$fileName = time() . '-' . $request->file('foto')->getClientOriginalName();
$product->foto = $fileName;
$product->save();
$imagePath = '/images/producten/'. $fileName;
$image = Image::make($request->file('foto')->getRealPath())->fit(300)->save($imagePath);
Run Code Online (Sandbox Code Playgroud)
我正在使用该Image/intervention程序包上传和存储图像.
我有一个脚本,通过干预保存和缓存图像,它的工作100%
但是我想弄清楚如何为jpg和png文件添加75%压缩,但我不知道我会在这种情况下应用它.
我不认为PNG文件可以被压缩而不是软件,所以我不确定它是否相同?
这里有一个压缩的例子:http://image.intervention.io/api/save
/* ////////////////////// IMAGES //////////////////////// */
Route::get( '/media/{size}/{crop}/{name}', function ( $size = null, $crop = null, $name = null ) {
if ( ! is_null( $size ) and ! is_null( $name ) and ! is_null( $crop ) ) {
$size = explode( 'x', $size );
$hours = 48;
$cache_length = $hours * 60;
switch ( $crop ) {
/*///////////////////////// no crop and change ratio */
case "0":
$cache_image = Image::cache( function ( $image ) …Run Code Online (Sandbox Code Playgroud) 我尝试使用laravel保存来自POST请求的图像.但它给了我以下错误.
Container.php第741行中的ReflectionException:类图像不存在
我做了以下事情:在php.ini文件中启用fileinfo扩展,composer dumpautoload
但没有任何工作我在这里遵循指南行
我正在使用laravel 5.1
我的代码如下
public function saveImage(){
Image::make(Input::file('files')->getRealPath())
->resize(870, null, true, false)
->save('foo.jpg');
}
Run Code Online (Sandbox Code Playgroud) 假设我有一个最喜欢的正方形尺寸,在这种情况下它有2236 px宽度和高度。
我需要使用php intervention package.
用户的图像尺寸是多少并不重要,但关键是图像必须以新尺寸保存,但用户图像必须位于正方形的中心和中间,如果图片小于我最喜欢的尺寸,则必须被拉伸,如果图像更大,它必须压缩到我的尺寸。
有没有人在这种情况下有任何经验,你知道我该怎么做吗?
提前致谢
我正在尝试使用二进制映像上传到存储,Laravel Intervention Image但它给出了错误,因为无法从给定的二进制数据初始化.
我正在使用此代码
$image = base64_decode($postData['image']);
$destinationPath = storage_path($destinationFolder);
if (!File::exists($destinationPath)) {
File::makeDirectory($destinationPath, 0777, true, true);
}
$filename = ($fileName != '') ? $fileName : $folderName . '_' . time() . '.jpg';
$imageResult = Image::make($image)->resize($imageWidth, $imageHeight, function ($constraint) {
$constraint->aspectRatio();
})->save($destinationPath . $filename, imageQuality($image));
if ($imageResult){
return '/image/' . $filename;
}
return false;
Run Code Online (Sandbox Code Playgroud)
二进制图像数据是
data:image/webp;base64,UklGRlIFAABXRUJQVlA4IEYFAAAQHACdASpPAHkAPlEQlEojkdHMYDgFBLIAZqA25eJVGRUWLtSnk7iTzHecd0SXUx8+t+zLWt8WJpEWrTTvLe9y9CX9VSAw3YOVEdn4oGm0ZIrnQUIJ7VsI/r+aW0VOJeFoJylth8MmFQHlbPEklNUVbgyVJnINmgXnDbtgj9paOvkDYnVAdv2ErJONHxXyp2eyn7mB6vcVu9AfWuUtDlYxhQG1CEongtTYR0U4jQIbXYTTzN/3G5cAEd0FmVN272q9XHtEAeWzrMHHsZ7YPtpmppalPe8BvhnrwSA+ctaG9iQ6b7pEVBVPAAD+/uy97OjEKfy53WiZp+vshoaLbmP0cVKb4k6hnKsxJdcP+CgaRYQkOjb4FGLJO55Q/c+afu5UzMOW3Tx4pq6YezZD8PSoPz4zk6GAAEL9XDf3c3RwQKG1r2lWKnBonjqCV8/oU/xr4Gv59yLHfFPfneUb6BrG9yoc40NAk+xGkgtKGsIDDanX+uuhaKWGntbgweNVylzqaIqZrCMYGgfkbTo+yPQ0JgHev/+hCnqRe4cEi4VfveeAi+7wBLg2w4tZOj0d7O7gJM6Zj9uaLB6l/3xyvdHwzThmi8na5GMB/v+Y7YAIYCGOV62mQ6XSrBMQHKUoPvIVwUeHVkJFWnUCt6S7yOMa9RkZxe8//Bphx4NhJ/dXc3x7HQESKmLUu8nofAJKiyg7v46s90BuZWpbVYysGbdPR9Shc9nqgYoEazEu+ik00Mr+VLM+/lS8aCumf4on0FkZ/Dn4SGJSU8pc02nt7ncW0e0XwVKx9DE8RfVww8GDv33+1ib7qkv1gsaGBdn60MpW2PzyI1ZDReCh25f4z4RsG91nEpjDr4MmVOaW40nXwNnAfuYawSt+b05IQx9GGw0seGFDJ4hbb+tTatszMiOSjhQ9HsO19t/hVFojVco/cKoG9XUSorPouBOqFqDrciO3+BVFFo5l5JW3Ka0ZtamSCrzt1AUzOndTy82imvJ+NZ1D+iXF92d3XITYsveniLVxEjp+pQIp8pXJ3p3DuFQPxzuQ44E3xWcPimJ7wuJnIrIm8jyFaM4AHJ1OBc/BG+0iP5zUHWl36LGK5VpoDkw34T+sQs9s0gOpG+tNM0uaKmwmONjo2L0tFqaiC4V4aHLO3JqptxoxSjn3BQVG5x/ga/7bz/hqeycRIoGrTuIqKAdCVVrYLEgr39NID+sKzK6BYzr8j9r3JMPZ3+2T09lEwe0u+S7B4wI3rlSz5L3DZspwtfkWcGtZpUCRqgOiWnFnpdIlor1+zvQK2ksDUpf0UbyRW/c59RQIfouYA6cKJUxsQzPPL5yvuIprzjZLY2HRkKFbemgUbPH1nxw28qtf2EixENC3uGus24PjYW8Jz/G5kZ2ioG2UXp00Aru2Z1Hk4AB0G2RPAzhdp1WQEnbqXb5a35eSSv5SGUYQbRDbaQNnyeODfb80a056/Cz7wmTtn5xvWT1UhTg7J/9J/4cCoBkweCOc1exDC4bBpdmwNyB82TfMOL+HcsO/UR1EDkEBdEl2HLQOA2mSntOQ3dTgMQX/71+MtpetptbThjL/fnRMMfVnpovAe2jd4SXx+s8fMNJXcEkO9ZKxIWFH0EwLvzIp8SPc5z+AzLEwfn4aBvVL835u4BsodI+usLpWnlC7Xdz6JMVxKivRpoWgrcIsAF91564sRuvXd3rwozLc0Fb/at7P3B3B5Jc7wPXQ/CH5Y6Thjn0W8zAWnd3VwwB3ZS/Uv/ubq8H7W9He6fvg6Ib/101yfwV8xpmLHwZGmXWgAAAAAAA=
Run Code Online (Sandbox Code Playgroud) 我有一个测试断言可以上传图像。这是代码...
// Test
$file = UploadedFile::fake()->image('image_one.jpg');
Storage::fake('public');
$response = $this->post('/api/images', [
'images' => $file
]);
Run Code Online (Sandbox Code Playgroud)
然后在控制器中我正在做一些更简单的事情..
$file->store('images', 'public');
Run Code Online (Sandbox Code Playgroud)
并断言几件事。它就像魅力一样。
但现在我需要使用干预图像包调整图像大小。为此,我有以下代码:
Image::make($file)
->resize(1200, null)
->save(storage_path('app/public/images/' . $file->hashName()));
Run Code Online (Sandbox Code Playgroud)
如果目录不存在,我首先检查这个并创建一个 -
if (!Storage::exists('app/public/images/')) {
Storage::makeDirectory('public/images/', 666, true, true);
}
Run Code Online (Sandbox Code Playgroud)
现在测试应该是green,我会,但问题是每次我运行测试时,它都会将文件上传到存储目录中。我不想要的。我只需要伪造上传而不是真实上传。
任何解决方案?
提前致谢 :)
我目前正在使用干预/图像来调整图像大小并将它们保存为 JPG。
我在 Windows 本地运行相同的代码,在 Ubuntu 20.20 远程运行。
在 Windows 中,它会将 PNG 转换为 JPG,将透明背景转换为白色。但是,在 Ubuntu 中,在白色背景之上添加了黑色噪音。
我运行的代码是:
$resize = Image::make($img)->encode('jpg');
$resize->height() > $resize->width() ? $width = null : $height = null;
$resize->resize($width, $height, function ($constraint) {
$constraint->aspectRatio();
});
Run Code Online (Sandbox Code Playgroud)
我应该在之前添加其他东西encode以确保透明度变成白色吗?
我想将 google plus 中的图像保存为下面的 url,它在本地计算机上也能正常工作,但在上传到 ubuntu14 时出现以下错误。
$image = Image::make('https://lh6.googleusercontent.com/-Gcp_Wjj7yA0/AAAAAAAAAAI/AAAAAAAAAB8/hl1xcz4FnEI/photo.jpg')
->resize(100, 100)->save(public_path('image/userface/fuck.jpg'));
Run Code Online (Sandbox Code Playgroud)
错误
Unable to init from given url
Run Code Online (Sandbox Code Playgroud) 当用户上传图片时,我想以多种格式存储它。我处理图像的代码:
$img = Image::make($file)->encode('png');
if($img->width()>3000){
$img->resize(3000, null, function ($constraint) {
$constraint->aspectRatio();
});
}
if($img->height()>3000){
$img->resize(null, 3000, function ($constraint) {
$constraint->aspectRatio();
});
}
$uid = Str::uuid();
$fileName = Str::slug($item->name . $uid).'.png';
$high = clone $img;
Storage::put( $this->getUploadPath($bathroom->id, $fileName, "high"), $high);
$med = clone $img;
$med->fit(1000,1000);
Storage::put( $this->getUploadPath($bathroom->id, $fileName, "med"), $med);
$thumb = clone $img;
$thumb->fit(700,700);
Storage::put( $this->getUploadPath($bathroom->id, $fileName, "thumb"), $thumb);
Run Code Online (Sandbox Code Playgroud)
如您所见,我尝试了一些变体。
我也试过:
$thumb = clone $img;
$thumb->resize(400, 400, function ($constraint) {
$constraint->aspectRatio();
});
Storage::put( $this->getUploadPath($fileName, "thumb"), $thumb);
Run Code Online (Sandbox Code Playgroud)
getUploadPath 函数:
public function …Run Code Online (Sandbox Code Playgroud) intervention ×10
laravel ×8
laravel-5 ×5
php ×5
image ×2
base64 ×1
compression ×1
file-upload ×1
laravel-5.1 ×1
tdd ×1