Intereting Posts
Magento: блокировка блокировки прекращает отображение phtml Создание базового тестового класса для PHPUnit и расширение его для общей функциональности приводит к ошибке, не найденной классом Эффективное копирование / дублирование / резервное копирование таблиц базы данных – mysql Можно ли использовать mysqli_fetch_object с подготовленным оператором Хранение данных кредитной карты с помощью mcrypt или GnuPG Сервер sql-сервера odbc_connect Статическая соль против случайной соли – безопасность PHP Как создать правильный класс расширения mysqli с подготовленными операторами? Новые строки в строке с библиотекой GD Я не могу использовать GET и POST одновременно в PHP Сортировка ассоциативного массива по значению в порядке убывания и сохранения, когда значения одинаковы PHP конвертировать иностранные символы с акцентами Корзина CodeIgniter RESTful, асинхронный / фоновый процесс Как защитить скрипт загрузки изображений PHP от эксплойтов?

file_put_contents () выдает ошибку при попытке экспорта изображения

Я создал изображение, скопировав несколько изображений в новый. На последнем этапе моей программы я пытаюсь экспортировать этот файл в папку.

Код выглядит следующим образом:

<?php require_once "../shdp/simple_html_dom.php"; $next = "http://www.pidjin.net/2012/08/28/of-my-own/"; $html = file_get_html($next); $imageList = $html->find('div[class=episode] p img'); $newHeight = 0; for($iii=0; $iii<count($imageList); $iii++){ $storage[$iii] = $imageList[$iii]->src; $img[$iii] = imagecreatefromstring(file_get_contents($storage[$iii])); $width[$iii] = imagesx($img[$iii]); $height[$iii] = imagesy($img[$iii]); $newHeight += ($height[$iii] + 30); } $newWidth = max($width); $cummDestHeight = 0; $export = imagecreatetruecolor($newWidth, $newHeight); imagefill($export, 0,0, 0xFFFFFF); for($iii=0;$iii<count($img);$iii++){ imagecopy($export, $img[$iii], 0, $cummDestHeight, 0, 0, $width[$iii], $height[$iii]); $cummDestHeight += $height[$iii] + 30; } $bits = explode('/',$next); file_put_contents("../pidjin/$bits[5]-$bits[4]-$bits[3].png",$export); ?> 

Ошибка, которую я получаю, такова:

 Warning: file_put_contents(): supplied resource is not a valid stream resource in E:\Web\Comics\pidjin.php on line 54 

Проблема : я не уверен, как я могу сделать $ export допустимым ресурсом потока.

$ export будет дескриптором изображения GD. Это НЕ что-то, что вы можете просто сбросить в файл и ожидать получить изображение в формате JPG или PNG.

Для этого вы должны делать

 imagepng($export, "../pidjin/$bits etc..."); 

который создаст для вас файл .PNG.

С другим вопросом я смог наконец заставить код работать.

Проблема была в том, что я пытался использовать file_put_contents, чтобы сбрасывать дескриптор GD, и, как оказалось, это не так просто. Я был imagepng функцию imagepng которая imagepng бы каталог как второй аргумент для экспорта файла.

Программа : я сделал программу для загрузки полос из веб- коммиксов Fredo и Pidjin, чтобы я мог прочитать их позже, когда у меня нет доступа к Интернету. Программа приведена ниже.

 <?php require_once "../shdp/simple_html_dom.php"; $next = "http://www.pidjin.net/2006/02/19/goofy-monday/"; $counter = 1; while($next){ $html = file_get_html($next); $imageList = $html->find('div[class=episode] p img'); $newHeight = 0; for($iii=0; $iii<count($imageList); $iii++){ $storage[$iii] = $imageList[$iii]->src; $img[$iii] = imagecreatefromstring(file_get_contents($storage[$iii])); $width[$iii] = imagesx($img[$iii]); $height[$iii] = imagesy($img[$iii]); $newHeight += ($height[$iii] + 30); } $newWidth = max($width); $cummDestHeight = 0; $export = imagecreatetruecolor($newWidth, $newHeight); imagefill($export, 0,0, 0xFFFFFF); for($iii=0;$iii<count($img);$iii++){ imagecopy($export, $img[$iii], 0, $cummDestHeight, 0, 0, $width[$iii], $height[$iii]); $cummDestHeight += $height[$iii] + 30; } $bits = explode('/',$next); imagepng($export, "../pidjin/$counter ($bits[5]-$bits[4]-$bits[3]).png"); $nextUrl = $html->find('span[class=next] a[rel=next]'); $next = $nextUrl[0]->href; $counter++; } в <?php require_once "../shdp/simple_html_dom.php"; $next = "http://www.pidjin.net/2006/02/19/goofy-monday/"; $counter = 1; while($next){ $html = file_get_html($next); $imageList = $html->find('div[class=episode] p img'); $newHeight = 0; for($iii=0; $iii<count($imageList); $iii++){ $storage[$iii] = $imageList[$iii]->src; $img[$iii] = imagecreatefromstring(file_get_contents($storage[$iii])); $width[$iii] = imagesx($img[$iii]); $height[$iii] = imagesy($img[$iii]); $newHeight += ($height[$iii] + 30); } $newWidth = max($width); $cummDestHeight = 0; $export = imagecreatetruecolor($newWidth, $newHeight); imagefill($export, 0,0, 0xFFFFFF); for($iii=0;$iii<count($img);$iii++){ imagecopy($export, $img[$iii], 0, $cummDestHeight, 0, 0, $width[$iii], $height[$iii]); $cummDestHeight += $height[$iii] + 30; } $bits = explode('/',$next); imagepng($export, "../pidjin/$counter ($bits[5]-$bits[4]-$bits[3]).png"); $nextUrl = $html->find('span[class=next] a[rel=next]'); $next = $nextUrl[0]->href; $counter++; } 

?>

Примечание. Я использовал Simple DOM Parser для очистки источника и просмотра DOM.

Приветствия.

file_put_contents в соответствии с руководством PHP принимает второй аргумент строки. Файл изображения не является строкой. См. Два других ответа выше. Так вы сохраняете изображения. Попробуйте использовать руководство немного больше.

Просто заменили «file_put_contents» на «imagejpeg ($ rotate, $ file_new)»;