Итак, рассмотрим следующее в Laravel 5.7 :
<?php
use Illuminate\Database\Seeder;
use App\Modules\Locations\Services\CreateMapService;
use ChristianEssl\LandmapGeneration\Struct\Color;
use App\Modules\Locations\Models\Location;
class SurfaceLocations extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$water = new Color(66, 129, 178);
$land = new Color(23, 132, 72);
$createImage = new CreateMapService($land, $water, 500, 500, 'random_map');
$createImage->generateMap('surface');
$contents = Storage::disk('maps')->get('surface.png');
$waterR = 66;
$waterG = 129;
$waterB = 178;
for ($x = 0; $x <= 500; $x++) {
for($y = 0; $y <= 500; $y++) {
$rgb = imagecolorat($contents, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
if ($r === $waterR && $g === $waterG && $b === $waterB) {
Location::create([
'x' => $x,
'y' => $y,
'is_water' => true
]);
} else {
Location::create([
'x' => $x,
'y' => $y,
'is_water' => false
]);
}
}
}
}
}
Итак, я создаю карту и сохраняю ее, затем пытаюсь открыть содержимое изображения и затем передать егоцвет изображения в, проходя через каждую x, y позицию изображения, чтобы увидеть, соответствует ли water rgb выходному rgb.
Но я получаю ошибку:
imagecolorat ()ожидает, что параметр 1 будет ресурсом, строка задана
Итак, я посмотрел, что это за ресурс, и получил функцию imagecreatetruecolor()
, но я не уверен, как использовать его с созданным и сохраненным изображением.
Есть идеи, как использовать эту функцию с существующим изображением?Документы, используйте пример создания изображения.