c # создать миниатюру для меньшего изображения - PullRequest
0 голосов
/ 18 мая 2018

В моем проекте я хочу сгенерировать миниатюру из изображений, которые были загружены пользователем, и показать ее в галерее (отображается в блоке div с размером: 180 x 250).Ниже приведен код, который я использую для этого.

Size thumbnailSize = GetThumbnailSize(img);
System.Drawing.Image thumbnail = img.GetThumbnailImage(thumbnailSize.Width, thumbnailSize.Height, null, IntPtr.Zero);
.....

private Size GetThumbnailSize(System.Drawing.Image original)
    {
        const int maxPixels = 300;

        int originalWidth = original.Width;
        int originalHeight = original.Height;

        double factor;
        if (originalWidth > originalHeight)
        {
            factor = (double)maxPixels / originalWidth;
        }
        else
        {
            factor = (double)maxPixels / originalHeight;
        }

        return new Size((int)(originalWidth * factor), (int)(originalHeight * factor));
    }

Моя проблема в том, что созданный эскиз подходит только для изображений такого большого размера, когда пользователь загружает изображение меньшего размера (например, 30 x 30), созданный эскиз будет увеличиваться, а не увеличиваться.ясно показано, как показано ниже.Так что же делать, чтобы генерировать миниатюры, которые находятся в соотношении и могут правильно отображаться в моем блоке div галереи, независимо от того, является ли изображение большим или маленьким?

Example of thumbnail generated

1 Ответ

0 голосов
/ 18 мая 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...