Проверьте имя в БД перед вставкой новой записи
$data = array(
"id_username" => $this->session->id_account,
"name_character" => $nome,
"birthdate" => $data,
"origin" => $origem,
"gender" => $sexo,
"pergunta1" => $pergunta3,
"pergunta2" => $pergunta4,
"history" => $history
);
$if_exists = $this->usuarios_model->check_user($data['name_character']);
//Here apply condition to check if user is exists or not
if($if_exists > 0){
//Already Exists
}else{
$this->usuarios_model->criarPersonagem($data); //New registration
}
Модель
public function check_user($name_character){
//Here, get the number if rows with the new user name
return $this->db->get_where('characters', ['Character' => $name_character])->num_rows();
}
Вы сказали, что Ваше изображение не может быть точно тем же, но затем сказать, что Вы не хотите "нечеткие" алгоритмы. Я не уверен, что это совместимо. В целом, тем не менее, я думаю, что Вы хотите посмотреть регистрация изображения алгоритмы. Существует пакет C++ с открытым исходным кодом, названный ITK, который мог бы обеспечить некоторые подсказки. Также ImageJ является популярным пакетом Java с открытым исходным кодом. Оба из них имеют по крайней мере некоторые регистрационные возможности в наличии, если Вы вводите по абсолютному адресу вокруг.
Вот скелет кода, который Вы хотели бы использовать:
// look for all (x,y) positions where target appears in desktop
List<Loc> findMatches(Image desktop, Image target, float threshold) {
List<Loc> locs;
for (int y=0; y<desktop.height()-target.height(); y++) {
for (int x=0; x<desktop.width()-target.width(); x++) {
if (imageDistance(desktop, x, y, target) < threshold) {
locs.append(Loc(x,y));
}
}
}
return locs;
}
// computes the root mean squared error between a rectangular window in
// bigImg and target.
float imageDistance(Image bigImg, int bx, int by, Image target) {
float dist = 0.0;
for (int y=0; y<target.height(); y++) {
for (int x=0; x<target.width(); x++) {
// assume RGB images...
for (int colorChannel=0; colorChannel<3; colorChannel++) {
dist += Math.pow(target.getPixel(x,y) - bigImg.getPixel(bx+x,by+y), 2);
}
}
}
return Math.sqrt(dist) / target.width() / target.height();
}
Вы могли рассмотреть другие расстояния изображения (см. подобный вопрос ). Для Вашего приложения ошибка RMS является, вероятно, хорошим выбором.
существуют, вероятно, различные библиотеки Java, которые вычисляют это расстояние для Вас эффективно.