1. ホーム
  2. iphone

[解決済み] UIImageのアスペクト比と幅を維持したリサイズ

2022-05-12 20:14:39

質問

アスペクト比を維持したまま画像のリサイズを行う投稿を多く見かけます。これらの関数は、リサイズ中にRECTの固定点(幅と高さ)を使用します。しかし、私のプロジェクトでは、私は幅だけに基づいてビューをリサイズする必要があり、高さはアスペクト比に基づいて自動的に取得する必要があります。 誰かこれを達成するために私を助けてください。

どのように解決するには?

スリカルの方法は、高さと幅の両方を知っていれば、非常にうまくいきます。 の両方がわかっている場合、Srikar の方法は非常にうまくいきます。 例えば、拡大縮小したい幅だけが分かっていて、高さは気にしない場合、まず高さのスケールファクターを計算する必要があります。

+(UIImage*)imageWithImage: (UIImage*) sourceImage scaledToWidth: (float) i_width
{
    float oldWidth = sourceImage.size.width;
    float scaleFactor = i_width / oldWidth;

    float newHeight = sourceImage.size.height * scaleFactor;
    float newWidth = oldWidth * scaleFactor;

    UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight));
    [sourceImage drawInRect:CGRectMake(0, 0, newWidth, newHeight)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext();
    return newImage;
}