Изменение размеров Изображения, не теряя [закрытого] качества

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

107
задан Nick Gallimore 6 November 2019 в 22:10
поделиться

9 ответов

Как говорит rcar, Вы не можете, не теряя некоторое качество, лучшее, которое можно сделать в c#:

Bitmap newImage = new Bitmap(newWidth, newHeight);
using (Graphics gr = Graphics.FromImage(newImage))
{
    gr.SmoothingMode = SmoothingMode.HighQuality;
    gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
    gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
    gr.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight));
}
214
ответ дан Community 24 November 2019 в 03:37
поделиться

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

32
ответ дан Randy 24 November 2019 в 03:37
поделиться

Я верю тому, что Вы надеетесь делать, "Изменяют размеры/Передискретизируют" Ваших изображений. Вот хороший сайт, который дает инструкции и обеспечивает служебный класс (Что я также, оказывается, использую):

http://www.codeproject.com/KB/GDI-plus/imgresizoutperfgdiplus.aspx

5
ответ дан Ashlocke 24 November 2019 в 03:37
поделиться

Если Вы не изменяете размеры, Вы не можете сделать этого с растровой графикой.

то, Что можно сделать с хорошей фильтрацией и сглаживанием, должно изменить размеры, не теряя никакой качество noticable .

можно также изменить метаданные DPI изображения (предполагающий, что это имеет некоторых), который проведет точно тот же пиксельный подсчет, но изменится, как редакторы изображений думают о нем в 'реальных' измерениях.

И только покрыть все основания, если Вы действительно имели в виду просто размер файла изображения а не размеров действительного образа, я предлагаю, чтобы Вы посмотрели на кодирование без потерь данных изображения. Мое предложение для этого должно было бы повторно сохранить изображение как .png файл (я склонен использовать краску в качестве бесплатного транскодера для изображений в окнах. Изображение загрузки в краске, как сохраните в новом формате)

3
ответ дан workmad3 24 November 2019 в 03:37
поделиться

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

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

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

Вот статья, которая объясняет один способ сделать это в c#: http://www.codeproject.com/KB/GDI-plus/imageresize.aspx

3
ответ дан AaronS 24 November 2019 в 03:37
поделиться

Посмотрите, нравится ли Вам изображение, изменяющее размеры качества этого модуля ASP.NET с открытым исходным кодом. существует живая демонстрация, таким образом, можно бездельничать с нею сами. Это приводит к результатам, которые являются (мне) невозможны различать от вывода Photoshop. Это также имеет подобные размеры файла - MS сделал хорошее задание на их кодере JPEG.

2
ответ дан 24 November 2019 в 03:37
поделиться

Существует, что-то там, изменение размеров с учетом контекста, не знает, будете ли Вы в состоянии использовать его, но это стоит посмотреть на, это наверняка

А хорошее демонстрационное видео (Увеличение появляется к середине) http://www.youtube.com/watch?v=vIFCV2spKtg

Здесь мог быть некоторый код. http://www.semanticmetadata.net/2007/08/30/content-aware-image-resizing-gpl-implementation/

Был тем излишеством? Возможно, существуют некоторые легкие фильтры, можно обратиться к увеличенному изображению для размывания пикселей немного, Вы могли изучить это.

1
ответ дан Victor 24 November 2019 в 03:37
поделиться

Вы изменяете размеры больше, или меньший? Маленьким % или большим фактором как 2x, 3x? Что Вы подразумеваете под качеством для своего приложения? И какой изображения - фотографии, бескомпромиссные рисунки строки, или что? Запись собственного пиксельного кода шлифования низкого уровня или попытки сделать это как можно больше с существующими библиотеками (.net или безотносительно)?

по этой теме существует большая совокупность знаний. Ключевое понятие является интерполяцией.

рекомендации Просмотра:
* http://www.all-in-one.ee/~dersch/interpolator/interpolator.html
* http://www.cambridgeincolour.com/tutorials/image-interpolation.htm
* для C#: https://secure.codeproject.com/KB/GDI-plus/imageprocessing4.aspx? display=PrintAll&fid=3657&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=26&select=629945 * это является определенным для Java, но могло бы быть образовательным - http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html

1
ответ дан DarenW 24 November 2019 в 03:37
поделиться

Вот поток форума , который предоставляет изображение C#, изменяющее размеры примера кода. Вы могли использовать один из библиотека GD редакторы связей, чтобы сделать передискретизацию в C#.

0
ответ дан jimg 24 November 2019 в 03:37
поделиться
Другие вопросы по тегам:

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