1 en boy oranına aşağıdaki yada bir belirttiğindeKırpma 1 Bir bit eşlem: I gibi bir en-boy oranına sahip bit haritası bilgisi
.. her hangi bir görüntü oranına olabilir Bu görüntüleri çevreleyen kısımları kesmek için bir seçeneğe ihtiyacım var, böylece 1: 1 En boy oranlı bir Görüntü üretilir. Bu
Ben bu görüntülerde merkez noktasını alacak düşünüyorumve mahsulün dışarı gibi taraf ..
ben web platformu bu yöntemi bulduk .. ama Bitmap yok
public static WebImage BestUsabilityCrop(WebImage image, decimal targetRatio)
{
decimal currentImageRatio = image.Width/(decimal)image.Height;
int difference;
//image is wider than targeted
if (currentImageRatio > targetRatio)
{
int targetWidth = Convert.ToInt32(Math.Floor(targetRatio * image.Height));
difference = image.Width - targetWidth;
int left = Convert.ToInt32(Math.Floor(difference/(decimal)2));
int right = Convert.ToInt32(Math.Ceiling(difference/(decimal)2));
image.Crop(0, left, 0, right);
}
//image is higher than targeted
else if (currentImageRatio < targetRatio)
{
int targetHeight = Convert.ToInt32(Math.Floor(image.Width/targetRatio));
difference = image.Height - targetHeight;
int top = Convert.ToInt32(Math.Floor(difference/(decimal)2));
int bottom = Convert.ToInt32(Math.Ceiling(difference/(decimal)2));
image.Crop(top, 0, bottom, 0);
}
return image;
}
bu sorunu çözmek için bir yol tavsiye edin
birCrop
yöntemi. Bu merkezden kırpma yok
public static Image Crop(Image source)
{
if (source.Width == source.Height) return source;
int size = Math.Min(source.Width, source.Height);
var sourceRect = new Rectangle((source.Width - size)/2, (source.Height - size)/2, size, size);
var cropped = new Bitmap(size, size);
using (var g = Graphics.FromImage(cropped))
g.DrawImage(source, 0, 0, sourceRect, GraphicsUnit.Pixel);
return cropped;
}
:
Kaynak dikdörtgeni alan bir DrawImage aşırı yükü var. Uygun bir hedef bitmapi çizmek için bunu kullanın! – TaW
Görüntü dikdörtgenini kareye dönüştürmeyi mi istiyorsunuz? –
@IvanStoev evet .. tür – techno