Найдено результатов: 6

Эффективное JPEG изменение размера изображения в PHP

Какой самый эффективный способ изменить размер больших изображений в PHP?

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

Это отлично работает на небольших (менее 2 MB) фотографиях, и вся операция изменения размера занимает меньше секунды на сервере. Однако в конечном итоге сайт будет обслуживать фотографов, которые могут загружать изображения размером до 10 MB (или изображения размером до 5000x4000 пикселей).

Выполнение такого рода операций изменения размера с большими изображениями приводит к увеличению использования памяти с очень большим запасом (большие изображения могут резко увеличить использование памяти для сценария после 80 MB). Есть ли способ сделать эту операцию изменения размера более эффективной? Должен ли я использовать альтернативную библиотеку изображений, такую как ImageMagick ?

Прямо сейчас код изменения размера выглядит примерно так

function makeThumbnail($sourcefile, $endfile, $thumbwidth, $thumbheight, $quality) {
    // Takes the sourcefile (path/to/image.jpg) and makes a thumbnail from it
    // and places it at endfile (path/to/thumb.jpg).

    // Load image and get image size.
    $img = imagecreatefromjpeg($sourcefile);
    $width = imagesx( $img );
    $height = imagesy( $img );

    if ($width > $height) {
        $newwidth = $thumbwidth;
        $divisor = $width / $thumbwidth;
        $newheight = floor( $height / $divisor);
    } else {
        $newheight = $thumbheight;
        $divisor = $height / $thumbheight;
        $newwidth = floor( $width / $divisor );
    }

    // Create a new temporary image.
    $tmpimg = imagecreatetruecolor( $newwidth, $newheight );

    // Copy and resize old image into new image.
    imagecopyresampled( $tmpimg, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height );

    // Save thumbnail into a file.
    imagejpeg( $tmpimg, $endfile, $quality);

    // release the memory
    imagedestroy($tmpimg);
    imagedestroy($img);

php   image   gd   jpeg    

536   9   15:16, 27th August, 2020


Ошибка отсечения чертежа .Net

Функция GDI+ DrawLines имеет ошибку отсечения, которую можно воспроизвести, выполнив следующий код c#. При выполнении кода появляются два пути строк, которые должны быть идентичными, потому что оба они находятся внутри области отсечения. Но когда область отсечения установлена, один из сегментов линии не рисуется.

protected override void OnPaint(PaintEventArgs e)
{
   PointF[] points = new PointF[] { new PointF(73.36f, 196), 
             new PointF(75.44f, 32), 
             new PointF(77.52f, 32), 
             new PointF(79.6f, 196), 
             new PointF(85.84f, 196) };

   Rectangle b = new Rectangle(70, 32, 20, 164);         
   e.Graphics.SetClip(b);
   e.Graphics.DrawLines(Pens.Red, points); // clipped incorrectly
   e.Graphics.TranslateTransform(80, 0);
   e.Graphics.ResetClip();
   e.Graphics.DrawLines(Pens.Red, points);
 }

Установка режима антиали на графическом объекте решает эту проблему. Но это не настоящее решение.

Кто-нибудь знает обходной путь?

winforms   graphics   gdi+   system.drawing    

498   3   09:18, 4th August, 2020


Какие инструменты вы используете для разработки приложений C++ на Linux?

Я разрабатываю приложения C++ в среде Linux. Инструменты, которые я использую каждый день, включают Eclipse с плагином CDT, gdb и valgrind.
Какие инструменты используют другие люди? Есть ли что-нибудь для Linux, что соперничает с изяществом Microsoft Visual Studio?

c++   linux   eclipse   gdb   valgrind    

546   24   11:52, 23rd August, 2020


Как изменить размер и преобразовать загруженное изображение в PNG с помощью GD?

Я хочу разрешить пользователям загружать изображения типа Аватара в различных форматах (по крайней мере, в форматах GIF, JPEG и PNG ), но сохранить их все как PNG database BLOBs . Если изображения слишком большие, по пикселям, я хочу изменить их размер до DB-вставки.

Что является лучшим способом, чтобы использовать GD, чтобы сделать изменения и преобразования PNG?

Edit: к сожалению, на сервере, который мне нужен, доступен только GD, а не ImageMagick .

php   database   image   png   gd    

534   9   07:01, 18th August, 2020


Внедрение данных изображения IPTC с PHP GD

Я пытаюсь встроить данные IPTC в изображение JPEG с помощью iptcembed() , но у меня возникли некоторые проблемы.

Я проверил, что это в конечном продукте:

// Embed the IPTC data
$content = iptcembed($data, $path);

// Verify IPTC data is in the end image
$iptc = iptcparse($content);
var_dump($iptc);

Который возвращает введенные теги.

Однако когда я сохраняю и перезагружаю изображение теги не существуют:

// Save the edited image
$im = imagecreatefromstring($content);
imagejpeg($im, 'phplogo-edited.jpg');
imagedestroy($im);

// Get data from the saved image
$image = getimagesize('./phplogo-edited.jpg');

// If APP13/IPTC data exists output it
if(isset($image['APP13']))
{
    $iptc = iptcparse($image['APP13']);
    print_r($iptc);
}
else
{
    // Otherwise tell us what the image *does* contain
    // SO: This is what's happening
    print_r($image);
}

Так почему же теги не отображаются в сохраненном изображении?

Источник PHP доступен здесь, и соответствующие выходы:

  1. Вывод изображения
  2. Вывод данных

php   gd   iptc    

409   1   02:49, 3rd August, 2020


Как сделать так, чтобы PictureBox использовало пересчет ближайших соседей?

Я использую StretchImage, потому что коробка может быть изменена с помощью сплиттеров. Похоже, что по умолчанию используется какая-то гладкая билинейная фильтрация, в результате чего мое изображение становится размытым и имеет муаровые узоры.

c#   .net   winforms   gdi+   picturebox    

477   4   22:18, 17th August, 2020