Php Store изменяет размер изображения как переменной

Я хотел бы сохранить выходное изображение как переменную, поэтому я могу запускать над ним циклы. Мне интересно, как я могу это сделать? Я смущен, как это сделать с помощью imagejpeg? Например, я хочу, чтобы в конечном итоге код был таким, где я могу отображать изображение с изображением echo $.

 $imagequery = mysql_query("SELECT source FROM photos ORDER BY id DESC LIMIT 16");

for($iii=0; $iii<16; $iii++) {

$ imagetrial = mysql_result ($ imagequery, $ iii, 'source'); $ imageSrc = imagecreatefromstring ($ imagetrial);

 $width = "300";

 if (is_numeric($width) && isset($imageSrc)){
 header('Content-type: image/jpeg');
 makeThumb($imageSrc, $width);
  }

function makeThumb($src,$newWidth) {

$srcImage = imagecreatefromjpeg($src);
$width = imagesx($srcImage);
 $height = imagesy($srcImage);

 $newHeight = floor($height*($newWidth/$width));

  $newImage = imagecreatetruecolor($newWidth,$newHeight);

  imagecopyresized($newImage,$srcImage,0,0,0,0,$newWidth,$newHeight,$width,$height);

   imagejpeg($newImage);
 }

}

0
nl ja de

2 ответы

Have a look at the function imagecreatefromstring

http://php.net/manual/en/function.imagecreatefromstring.php

$image = imagecreatefromstring($imageSrc);

if ($image !== FALSE) {
 //the variable is now a valid image resource
}

Что касается вашего запроса, он возвращает несколько строк. Вам нужно брать строки один за другим.

$result = mysql_query("SELECT source FROM photos ORDER BY id DESC LIMIT 16");

while ($row = mysql_fetch_assoc($result)) {
  $image = imagecreatefromstring($row['source']);

  if ($image !== FALSE) {
   //the variable is now a valid image resource
  }
}

Однако он будет чрезвычайно ресурсоемким. Лучшее решение - хранить изображения на диске и иметь путь к изображениям в базе данных.

Также имейте в виду, что процедурные функции MySQL устарели. Вы должны перейти к mysqli.

http://fr2.php.net/manual/en/book.mysqli.php

EDIT: в вашем вопросе не указано, что вы хотели, вообще . Этот код (не протестированный) будет рисовать миниатюры по размеру в виде галереи. Есть способы упростить его, но я написал его, чтобы его было легко понять.

$num_columns = 4;//the number of thumbnails per row
$thumb_width = 400;
$thumb_height = 300;

$result = mysql_query("SELECT source FROM photos ORDER BY id DESC LIMIT 16");

// the actual number of results
$num_photos = mysql_num_rows($result);
$num_rows = ceil($num_photos/$num_columns);

$gallery_width = $num_columns * $thumb_width;
$gallery_height = $num_rows * $thumb_height;

// create a large empty image that will fit all thumbnails
$gallery = imagecreatetruecolor($gallery_width, $gallery_height);

$x = 0;
$y = 0;

// fetch the images one by one
while ($row = mysql_fetch_assoc($result)) {
  $image = imagecreatefromstring($row['source']);

 //the variable is now a valid image resource
  if ($image !== FALSE) {
   //grab the size of the image
    $image_width = imagesx($image);
    $image_height = imagesy($image);

   //draw and resize the image to the next position in the gallery
    imagecopyresized($gallery, $image, $x, $y, 0, 0, $thumb_width, $thumb_height, $image_width, $image_height);

   //move the next drawing position to the right
    $x += $thumb_width;

   //if it has reached the far-right then move down a row and reset the x position
    if ($x >= $gallery_width) {     
        $y += $thumb_height;
        $x = 0;
    }

   //destroy the resource to free the memory
    imagedestroy($image);
  }
}
mysql_free_result($result);

// send the gallery image to the browser in JPEG
header('Content-Type: image/jpeg');
imagejpeg($gallery);

EDIT: опечатка зафиксирована в коде

0
добавлено
Я обновил ответ. И вы не можете эхо изменить переменную изображения, это просто ресурс. Если вы хотите распечатать изображение, вы можете просто прямо отослать исходный текст и отправить правильные заголовки.
добавлено автор Michael, источник
Я не понимаю, чего вы пытаетесь достичь. Вы используете SQL-запрос, ожидающий 16 результатов. Зачем? Вы хотите отобразить одно изображение в браузере?
добавлено автор Michael, источник
Ответ обновлен.
добавлено автор Michael, источник
Я попробовал это $ im = imagecreatefromstring ($ newImage); echo $ im; , Но это не сработало. Есть идеи?
добавлено автор user1605871, источник
Майкл, который все еще не работает. См. Мои правки выше. Что не так?
добавлено автор user1605871, источник
Я хочу отображать 16 разных изображений, масштабированных по размеру эскизов или около того, рядом друг с другом. Как я могу это сделать?
добавлено автор user1605871, источник
Есть еще идеи?
добавлено автор user1605871, источник
Этот код не работает. Он не отображает изображения.
добавлено автор user1605871, источник
этот код по-прежнему не работает.
добавлено автор user1605871, источник

Для хранения содержимого изображения в переменной вам нужно будет сохранить изображение большого пальца в определенный путь, а затем получить содержимое изображения с помощью функции file_get_content()

Вы можете сохранить окончательное изображение большого пальца, передав путь назначения в качестве аргумента в функцию imagejpeg

В качестве решения проблемы обратитесь к приведенному ниже фрагменту кода

           $width = "300";
        $thumb_image_file=$_SERVER['DOCUMENT_ROOT'].'/thumbs/abc.jpg';
        if (is_numeric($width) && isset($imageSrc)){
        header('Content-type: image/jpeg');
        makeThumb($imageSrc, $width);
        $img_content=file_get_contents($thumb_image_file);
       echo $img_content;
   }

     function makeThumb($src,$newWidth,$thumb_image_file) {


               $srcImage = imagecreatefromjpeg($src);
             $width = imagesx($srcImage);
            $height = imagesy($srcImage);

        $newHeight = floor($height*($newWidth/$width));

        $newImage = imagecreatetruecolor($newWidth,$newHeight);

              imagecopyresized($newImage,$srcImage,0,0,0,0,$newWidth,$newHeight,$width,$height);


                 imagejpeg($newImage,$thumb_image_file);
   }
0
добавлено
Как мне это сделать в цикле? Код запускается и работает для 1 изображения, но когда я завершаю его в цикл for, он ничего не выводит. Должен ли я хранить $ thumb_image_file в таблице, а затем называть его? Я беспокоюсь о памяти.
добавлено автор user1605871, источник
Это все еще не работает в цикле. Есть идеи?
добавлено автор user1605871, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

CSS — русскоговорящее сообщество
CSS — русскоговорящее сообщество
1 502 участник(ов)

Сообщество любителей CSS Возникли проблемы с CSS? – пиши сюда, обсудим и предложим самое лучшее решение Работа: @css_ru_jobs Правила: https://teletype.in/@css_ru/r1EWtQ2w7 Приходите в наши чаты @javascript_ru и @frontend_ru Флуд: @css_flood

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

Чат — Типичный Верстальщик
Чат — Типичный Верстальщик
1 080 участник(ов)

Основной канал: @tpverstak Обратная связь: @annblok Все ссылки на соц.сети проекта: http://taplink.cc/tpverstak ПРАВИЛА ЧАТА — https://teletype.in/@annblok/BygPgC3E7

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp

Веб-Технологи: UI/UX, Вёрстка, Фронтенд
Веб-Технологи: UI/UX, Вёрстка, Фронтенд
167 участник(ов)

Всё про веб-дизайн и вёрстку. А также: HTML, CSS, флекс и бутстрапы, шаблонизаторы, препроцессоры, методологии, аглифаеры, улучшаторы и обфускаторы. Обсуждаем темы юзабилити, устраиваем А/В тесты лендингов, и проводим аудит.

DTP :: @DTPublish
DTP :: @DTPublish
147 участник(ов)

Обсуждаемые темы: полиграфия, препресс, верстка, дизайн, иллюстрации, скрипты, плагины. Канал - @DTPublishing

css_jobs
css_jobs
26 участник(ов)

Чат для вопросов по css и html: @css_ru Флуд: @css_flood Канал с вакансиями и резюме: @css_jobs_feed

css_флуд
css_флуд
10 участник(ов)