![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Необходимо уменьшить масштаб полученного снимка с минимальными потерями качества. 
		
	
		
		
		
		
		
	
		
		
	
	
	Результат: масштаб был уменьшен с помощью функции ResizeBitmap - качество изображения изменилось с худшим результатом: ![]() Качество изображения без функции нормальное, но масштаб 1366х768: ![]() Прошу помочь разобраться с уменьшением масштаба изображения с минимальными потерями в качества.   Код: 
	uses Jpeg; function ResizeBitmap(BmpIn : TBitmap; NewWidth, NewHeight : Integer) : TBitmap; begin Result := TBitmap.Create; try Result.Width := NewWidth; Result.Height := NewHeight; Result.PixelFormat := BmpIn.PixelFormat; Result.Canvas.StretchDraw(Rect(0, 0, Result.Width, Result.Height), BmpIn); except Result.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); var JpegIm: TJpegImage; bm: TBitMap; ScrJpg : String; begin ScrJpg := 'screenshot.jpg'; DeleteFile(ScrJpg); bm := TBitMap.Create; bm.Width := Screen.Width; bm.Height := Screen.Height; BitBlt(bm.Canvas.Handle, 0, 0, bm.Width, bm.Height, GetDC(0), 0, 0, SRCCOPY); bm := ResizeBitmap(bm, 1280, 720); JpegIm := TJpegImage.Create; JpegIm.Assign(bm); JpegIm.CompressionQuality := 90; JpegIm.Compress; JpegIm.SaveToFile(ScrJpg); bm.Destroy; JpegIm.Destroy; Form1.Close; end;  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Пример использования: 
		
	
		
		
			Код: 
	ResampleBitmap(BmpSrc, BmpDest, ResampleFilters[5].Filter, ResampleFilters[5].Width);  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Вот тут еще можно посмотреть: 
		
	
		
		
		
		
		
	
		
		
	
	
	https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx Заголовки для GDI+ ищи в интернете, они есть. PS. angvelem, а ты нигде бикубическую фильтрацию не встречал?  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 offtop: Я особо не заморачивался поиском различных фильтров. Этот исходник я нарыл около 10 лет назад, когда писал программу для различных эффектов над изображениями. Больше подобным не занимался. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Код: 
	type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
...
procedure TForm1.FormCreate(Sender: TObject);
var
  Bitmap: TBitmap;
begin
  Width:=Screen.Width;
  Height:=Screen.Height;
  Left:=0;
  Top:=0;
  Image1.Width:=ClientWidth-Image1.Left shl 1;
  Image1.Height:=ClientHeight-Image1.Top shl 1;
  Bitmap:=TBitmap.Create;
  try
    Bitmap.LoadFromFile('Безымянный.bmp');
    SetStretchBltMode(Image1.Canvas.Handle, HALFTONE);
    StretchBlt(Image1.Canvas.Handle, 0, 0, Image1.Width, Image1.Height, Bitmap.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, SRCCOPY);
  finally
    Bitmap.Free;
  end;
end;основной момент в коде: Код: 
	SetStretchBltMode(Image1.Canvas.Handle, HALFTONE); StretchBlt(Image1.Canvas.Handle, 0, 0, Image1.Width, Image1.Height, Bitmap.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, SRCCOPY);  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 Все перепробовал, в итоге получается изображение с весом в 0 кб, Подскажи angvelem, может, что-то я не так делаю? ![]()  | 
| 
		 
			 
			#7  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Цитата: 
	
 результат тот же, качество изображения плохое.  | 
| 
		 
			 
			#8  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 а хорошим оно никогда не будет. это же растровая картинка. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#9  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 | 
| 
		 
			 
			#10  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 разница с HALFTONE ощутимая) 
		
	
		
		
		
		
		
	
		
		
	
	
	 |