2011-02-10 10 views
1

トリミングされたCGImageを取得する必要があります。私は、いくつかの色の周りに空白(アルファ= 0)を持っている画像を持っており、可視色のみのサイズを得るためにトリミングする必要があります。CGImageからトリムアルファ

ありがとうございました。

答えて

0

これをやって、次の3つの方法があります:

1)Photoshopを使用(選択したかのイメージエディタ)画像を編集する - 私はあなたがこれを行うことはできませんと仮定し、それは答えあまりにも明白です!

2)無視してみてください。それを無視して、イメージをフルサイズで描画してみませんか?それは透過的なので、ユーザーは気づかないでしょう。

3)アルファ値> 0を持つ画像になるまで、画像内の各ピクセルを通過するコードを記述します。これにより、上からトリミングする行数が得られます。しかし、これはあなたのUIを遅くするので、あなたはバックグラウンドスレッドでそれをやりたいかもしれません。

私はそれをする必要があり

// To get the number of transparent rows at the top of the image 
// Sorry this code is so ugly 
uint32 *p = start_of_image; 
while (0 == *p & 0x000000ff && p < end_of_image_data) ++p; 
uint number_of_white_rows_at_top = (p - start_of_image)/width_of_image; 

あなたはUIImageViewを使用して、それを描くことができ、画像の周りからの透明スペースの量を知っている場合は、センターとそれはあなたのためにトリミングをやらせるためにrenderModeを設定:)

+0

動的に、私はサイズ(正確ではないが、私はそれが必要)が必要なので、1と2は動作しません。私は#3と似たアプローチを試みましたが、それは遅すぎます:/あなたが提案した正確な方法で試してみます。私はいくつかのマスクマジックのある方法があることを願った。 –

+0

メインスレッドで作業するのは間違いですが、イメージの上部と下部をトリミングするアプリケーションがありますが、バックグラウンドでの処理に対処するにはNSOperationQueueを作成する必要があります。 – deanWombourne

関連する問題