亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用寬高比調整UIImage的大小?

用寬高比調整UIImage的大小?

慕桂英4014372 2019-10-26 12:37:12
我正在使用以下代碼來調整iPhone上圖像的大小:CGRect screenRect = CGRectMake(0, 0, 320.0, 480.0);UIGraphicsBeginImageContext(screenRect.size);[value drawInRect:screenRect blendMode:kCGBlendModePlusDarker alpha:1];UIImage *tmpValue = UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();只要圖像的縱橫比與新調整大小的圖像的縱橫比匹配,該方法就很好用。我想對此進行修改,以使其保持正確的寬高比,并在未顯示圖像的任何地方放置黑色背景。因此,我仍然會得到一張320x480的圖像,但頂部和底部或側面為黑色,具體取決于原始圖像的大小。有沒有一種類似于我正在做的簡單方法?謝謝!
查看完整描述

3 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

設置屏幕矩形后,請執行以下類似操作,以決定在哪個矩形上繪制圖像:


float hfactor = value.bounds.size.width / screenRect.size.width;

float vfactor = value.bounds.size.height / screenRect.size.height;


float factor = fmax(hfactor, vfactor);


// Divide the size by the greater of the vertical or horizontal shrinkage factor

float newWidth = value.bounds.size.width / factor;

float newHeight = value.bounds.size.height / factor;


// Then figure out if you need to offset it to center vertically or horizontally

float leftOffset = (screenRect.size.width - newWidth) / 2;

float topOffset = (screenRect.size.height - newHeight) / 2;


CGRect newRect = CGRectMake(leftOffset, topOffset, newWidth, newHeight);

如果您不想放大小于screenRect的圖像,請確保factor大于或等于1(例如factor = fmax(factor, 1))。


要獲得黑色背景,您可能只想將上下文顏色設置為黑色,并在繪制圖像之前調用fillRect。


查看完整回答
反對 回復 2019-10-26
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

我得到“的功能隱式聲明的‘最大’”由編譯器拋出,即使我記得,包括math.h中(我用的XCode 4.0)更改:float factor = max( …以float factor = MAX( …全部大寫)解決了這個問題。FWIW之所以需要重新縮放UIImage(而不是UIImageView),是因為我將圖像設置為默認樣式的UITableCell。這有助于我避免實現自定義UITableCell。感謝Frank提供的出色解決方案!

查看完整回答
反對 回復 2019-10-26
  • 3 回答
  • 0 關注
  • 578 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號