UIImageからURLを取得するにはどうすればよいですか?iPhoneライブラリから画像を取得し、サイズを変更しました。新しい画像を保存したくありませんが、そのURLを取得したいと思います。
4 に答える
あなたはそれを保存したくないと言いますが、 の URL が必要な場合は、必要な URLUIImage
を取得するために一時コピーを簡単に保存できます。
新しいSwift 5の場合:
// Create a URL in the /tmp directory
guard let imageURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("TempImage.png") else {
return
}
let pngData = image.pngData();
do {
try pngData?.write(to: imageURL);
} catch { }
これで、URL を使用して、画像をソーシャル メディアや必要に応じて共有できます。
以前の Swift バージョンの場合:
// Create a URL in the /tmp directory
guard let imageURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("TempImage.png") else {
return
}
// save image to URL
do {
try UIImagePNGRepresentation(myImage)?.write(to: imageURL)
} catch { }
詳しくはこちらをご覧ください。
UIImage には URL やファイル情報はありません。これは、ピクセルの色データを表すバイトの集まりです。UIImagePicker から UIImage を取得すると、アセット ライブラリ内の元の画像への URL を取得できます。ただし、この URL はイメージ ピッカー デリゲート メソッドで取得する必要があり、UIImage オブジェクトとは別に追跡する必要があります。
編集-OPのコメントに基づいて、これは要求されている情報ではありません。
探しているのはUIImagePickerControllerReferenceURL
、info ディクショナリのデリゲート コールバックによって提供されるパラメーターです。あなたがする必要があるのは:
NSURL* imageURL = [info objectForKey:UIImagePickerControllerReferenceURL];
そして、それは次のようになります。
assets-library://asset/asset.JPG?id=SOME_GUUID&ext=JPG
この後者を使用してUIImage*
、コールバックで取得した同じ画像を参照することができます。
UIImage をサブクラス化し、オーバーライド initWithURL: を作成して、作成したプロパティに URL を保存することができます...このようなものです。
+ (id) initWithURL:(NSURL*)url
{
[super initWithURL:url];
self.url = url;
}