2014-09-23 5 views
0

Я переворачиваю изображение (12M), найдите размер изображения до 26M, а формат изображения изменится на png. Я сохраняю его в jpeg с помощью imageformat, но размер изображения уменьшается до 2M. код следующим образом.Flip jpeg Качество потери изображения

public void Flip(Bitmap map) 
{ 
    bmp.Save("d://image1.jpg") //12M 

    RotateFlipType rft = RotateFlipType.Rotate180F 

    bmp.RotateFlip(rft); 
    bmp.Save("d://image2.jpg") //26M 

    bmp.Save("d://image3.jpg",ImageFormat.Jpeg) //2M 

} 

Если я хочу, чтобы новое изображение имело тот же размер с изображением orignal, как я могу это сделать?

Я пытаюсь сохранить изображение с помощью EncoderParameters, но я не могу получить действительный EncoderParameterList из изображения orignal, и я открываю image3.jpg с помощью инструментов изображения, я считаю, что его качество составляет 75 (изображение оригналия - 100L) , а подвыборка ВКЛЮЧЕН (изображение оригана выключено, как я могу установить это).

спасибо.

+0

Вы ищете [JpegBitmapEncoder] (http://msdn.microsoft.com/library/System.Windows.Media.Imaging.JpegBitmapEncoder.aspx)? Вращение и перевертывание должны быть без потерь. – Corak

+0

Я не уверен, что размер на самом деле всегда является показателем качества. – TaW

ответ

1

Попробуйте это:

var jgpEncoder = GetEncoder(ImageFormat.Jpeg); 
var myEncoder = System.Drawing.Imaging.Encoder.Quality; 

var myEncoderParameters = new EncoderParameters(1); 
var myEncoderParameter = new EncoderParameter(myEncoder, 75L); 
myEncoderParameters.Param[0] = myEncoderParameter; 

bmp.Save(@"d://image2.jpg", jgpEncoder, myEncoderParameters); 

Также см MSDN для справки

+0

Я пробовал, и я установил качество до 100L, размер изображения - 8M (изображение оригнала - 12M), возможно, мне также нужно установить подвыборку, но я не могу найти, где ее установить. – conger

+0

Я пробую это: var encList = bmp.GetEncoderParameterList (info.Clsid); RotateFlipType rft = RotateFlipType.Rotate180FlipY; bmp.RotateFlip (rft); bmp.Save ("d: //image3.jpg", info, encList); существует исключение: параметры недействительны. – conger

3

Если вы не используете библиотеку без потерь JPEG листать, Вы должны проверить параметры исходного файла JPEG. Используйте их как выходные параметры.

В частности, выборка (в марке SOF) и таблицы квантования (маркер DQT) должна быть одинаковой, чтобы получить наилучшие результаты.

Существует ряд программ, которые будут выгружать содержимое потока JPEG, чтобы вы могли видеть, что представляют собой эти параметры.

«Качество» - абсолютно бессмысленная фигура в формате JPEG. Это просто сокращение, которое многие кодировщики JPEG используют для выбора таблиц квантования. 75 цифр в одной реализации могут быть чем-то совершенно другим в другом.

 Смежные вопросы

  • Нет связанных вопросов^_^