Ich habe Probleme mit der Konvertierung von Variablen von $ _POST [] nach int (long), um eine Funktion zu erfüllen, die lange dauert.PHP Konnte Variablen nicht in int
Diese Funktion benötigt einige Eingabevariablen ($ width und $ height), die beide lang sind. Das Skript ruft diese Variablen von $ _POST [] ab und sie werden beim Abrufen natürlich mit einer Zeichenkette versehen. Ich habe für die Umwandlung dieser Variablen in beiden float, int und lange verschiedene Methoden ausprobiert:
$variable = (float) $_POST["variable"];
und
$variable = $_POST["variable"] + 0;
und
settype($variable, "float");
Aber ich immer noch die gleichen Fehler in Fehler. protokollieren, egal was ich mache:
PHP Warning: imagecreatetruecolor() expects parameter 1 to be long, string given in /bla bla bla/resize_image.php on line 30
Es ist soweit, dass ich es satt habe, auf Google nach Lösungen zu suchen, da nichts das verdammte Ding zu konvertieren scheint. Also frage ich euch, ob ich etwas übersehen habe oder ob das überhaupt möglich ist.
get_image.php
$url = "../../" . $_POST["url"];
$cropped = false;
$width = 0;
$height = 0;
if (isset($_POST["cropped"])) {
$cropped = $_POST["cropped"];
}
if (isset($_POST["width"])) {
$width = $_POST["width"];
}
if (isset($_POST["height"])) {
$height = $_POST["height"];
}
// Get image
$type = pathinfo($url, PATHINFO_EXTENSION);
$data = file_get_contents($url);
if ($width > 0 && $height > 0) {
include "Classes/resize_image.php";
settype ($width , "float");
settype ($height , "float");
$data = resize_image($url, $cropped, $width, $height, $_POST["type"]);
}
$base64 = base64_encode($data);
echo $base64;
resize_image.php (Klasse)
function resize_image($file, $w, $h, $crop=FALSE, $type) {
list($width, $height) = getimagesize($file);
$r = $width/$height;
if ($crop) {
if ($width > $height) {
$width = ceil($width-($width*abs($r-$w/$h)));
} else {
$height = ceil($height-($height*abs($r-$w/$h)));
}
$newwidth = $w;
$newheight = $h;
} else {
if ($w/$h > $r) {
$newwidth = $h*$r;
$newheight = $h;
} else {
$newheight = $w/$r;
$newwidth = $w;
}
}
if ($type == "png") {
$src = imagecreatefrompng($file);
} else if ($type == "jpeg") {
$src = imagecreatefromjpeg($file);
}
$dst = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
return $dst;
}
Ich bin dringend !!
Haben Sie 'floatval()' ausprobiert? – shalvah
Sieht so aus, als hätten Sie die Funktion falsch aufgerufen. '$ data = resize_image ($ url, $ abgeschnitten, $ width, $ height, $ _POST [" type "]);' sollte '$ data = resize_image ($ url, $ width, $ height, $ cropped, $ _POST sein ["type"]); ' – shalvah