Создание изображения, не храня его как локальный файл

Если вы используете представления / компоненты Vue и их внутренний код шаблона, элементы не будут отображаться, пока Vue не будет готов.

Значение внутри app.vue ничего не отображается, пока маршрутизатор не загрузит представление

<template>
  <div id="app">
    <router-view/>
  </div>
</template>
12
задан Pekka supports GoFundMonica 12 January 2013 в 16:51
поделиться

5 ответов

Большинство людей, использующих PHP, выбирает ImageMagick или Gd2

Я никогда не использовал Imagemagick; метод Gd2:

<?php

// assuming your uploaded file was 'userFileName'

if ( ! is_uploaded_file(validateFilePath($_FILES[$userFileName]['tmp_name'])) ) {
    trigger_error('not an uploaded file', E_USER_ERROR);
}
$srcImage = imagecreatefromjpeg( $_FILES[$userFileName]['tmp_name'] );

// Resize your image (copy from srcImage to dstImage)
imagecopyresampled($dstImage, $srcImage, 0, 0, 0, 0, RESIZED_IMAGE_WIDTH, RESIZED_IMAGE_HEIGHT, imagesx($srcImage), imagesy($srcImage));

// Storing your resized image in a variable
ob_start(); // start a new output buffer
  imagejpeg( $dstImage, NULL, JPEG_QUALITY);
  $resizedJpegData = ob_get_contents();
ob_end_clean(); // stop this output buffer

// free up unused memmory (if images are expected to be large)
unset($srcImage);
unset($dstImage);

// your resized jpeg data is now in $resizedJpegData
// Use your Undesigned method calls to store the data.

// (Many people want to send it as a Hex stream to the DB:)
$dbHandle->storeResizedImage( $resizedJpegData );
?>

Надеюсь, это поможет.

12
ответ дан 2 December 2019 в 03:49
поделиться

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

//$image contains the GD image resource you want to store

ob_start();
imagejpeg($image);
$jpeg_file_contents = ob_get_contents();
ob_end_clean();

//now send $jpeg_file_contents to S3
7
ответ дан 2 December 2019 в 03:49
поделиться

После того как у Вас есть JPEG в памяти (использующий ImageMagick, GD или Вашу графическую предпочтительную библиотеку), необходимо будет загрузить объект из памяти на S3.

Много классов PHP S3 кажутся только загрузкам файла поддержки, но тот в Неумышленном, кажется, делает то, что мы после здесь -

// Manipulate image - assume ImageMagick, so $im is image object
$im = new Imagick();
// Get image source data
$im->readimageblob($image_source);

// Upload an object from a resource (requires size):
$s3->putObject($s3->inputResource($im->getimageblob(), $im->getSize()), 
                  $bucketName, $uploadName, S3::ACL_PUBLIC_READ);

При использовании GD вместо этого, можно использовать imagecreatefromstring для чтения изображения в из потока, но я не уверен, можно ли получить размер полученного объекта, как требуется s3->inputResource выше - getimagesize возвращает высоту, ширину, и т.д., но не размер ресурса изображения.

6
ответ дан 2 December 2019 в 03:49
поделиться

Библиотека Imagemagick позволит Вам сделать это. Существует много оберток PHP как этот вокруг для него (существует даже пример кода для того, что Вы хотите сделать на той странице ;)),

4
ответ дан 2 December 2019 в 03:49
поделиться

Maye при помощи библиотеки GD.

Существует функция, чтобы скопировать часть изображения и изменить размер его. Конечно, часть могла быть целым изображением, тот способ, которым Вы только измените размер его.

см. imagecopyresampled

-1
ответ дан 2 December 2019 в 03:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: