2017-09-27 3 views
0

nicht ändern Ich habe einen PHP-Code, um ein Bild zu bekommen und die Größe zu ändern. Kann die Ausgabe nicht wie erwartet erhalten. Bitte helfen Sie mir herauszufinden, was das genaue Problem ist .. !!kann die Größe eines Bildes mit php

<?php 
$picture_source = 'image.png'; 
if ($picture_source != null){ 
    $img1=file_get_contents($picture_source); 
    $new_img1 = resizeImage($img1, 200, 200); 
    file_put_contents("i1.png", $new_img1); 
} 

function resizeImage($img,$newwidth,$newheight) { 
    list($width, $height) = getimagesizefromstring($img); 
    $thumb = imagecreatetruecolor($newwidth, $newheight); 
    imagecopyresampled($thumb, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
    return $thumb; 
} 

Antwort

0

Sie haben einige Verwirrung mit Ihren Variablennamen und -typen. Sie versuchen, gleichzeitig mit einem Dateinamen, dem Dateiinhalt und einer Bildressource umzugehen, und Sie verwenden die falschen für einige der Funktionen.

imagecopyresampled nimmt zwei Bildressourcen (Quelle und Ziel), aber Sie übergeben den Dateiinhalt anstelle der Quelle.

file_put_contents nimmt eine Zeichenfolge für den Inhalt der Datei, aber Sie übergeben die skalierte Bildressource.

PHP verfügt über native Funktionen zum Lesen der Bilddimensionen und zum Erstellen einer Bildressource aus einem Dateinamen. Daher sollte der Inhalt der Quelldatei nie als Zeichenfolge verfügbar sein.

Wenn Sie ein paar der Variablennamen ändern und Funktionsaufrufe um, Sie am Ende mit:

<?php 
$sourceFilename = 'image.png'; 

if ($sourceFilename != null){ 
    $newImg = resizeImage($sourceFilename, 200, 200); 
    imagepng($newImg, "i1.png"); 
} 

function resizeImage($imgFilename, $newWidth, $newHeight) { 
    list($width, $height) = getimagesize($imgFilename); 

    $img = imagecreatefrompng($imgFilename); 
    $thumb = imagecreatetruecolor($newWidth, $newHeight); 

    imagecopyresampled($thumb, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); 

    return $thumb; 
} 

Auch Sie auf PHP-Hinweise und Warnungen in Ihrer Entwicklungsumgebung drehen sollte - sie haben wird versucht, dir zu helfen.

+0

Es ergibt sich ein komplettes schwarzes Bild .. @iainn –

+0

@VikranthAyu Aktualisiert. Es gab auch ein paar andere Probleme in Ihrem ursprünglichen Code. – iainn

+0

Danke für die Klarstellung. Aber es funktioniert gut, wenn ich JPEG-Bilder nicht gut mit PNG-Bildern lese und erstelle –

Verwandte Themen