我正在尝试将图像保存在目录中。图像正确地保存在正确的位置,但是当我使用取景器中的路径检查这些图像时,所有图像均被损坏且无法使用。
在静态方法下面:
static func writeImageFile(with data: Data, issue: Issue, page: Int, isThumbnail: Bool) throws -> URL {
let url = MediaFileManager.issueImagesDirectoryURL(issue: issue).ensuringDirectoryExists()
let imageURL = url.appendingPathComponent(imageName(for: page, isThumbnail: isThumbnail))
try data.write(to: imageURL)
return url
}
该类中的呼叫:
DispatchQueue.main.async {
guard let data = result.data else {
self.downloadDidFail(for: result.page)
return
}
do {
let writeImageFile = try MediaFileManager.writeImageFile(with: data, issue: self.issue, page: result.page, isThumbnail: false)
let writeThumbFile = try MediaFileManager.writeImageFile(with: data, issue: self.issue, page: result.page, isThumbnail: true)
print(writeImageFile)
print(writeThumbFile)
} catch let error as NSError {
print(error.localizedDescription)
}
}
答案 0 :(得分:1)
我将假设,因为您没有对此进行详细说明,所以您有一堆UIImage对象。 而且我还注意到您希望将图像保存为JPEG,这完全没有问题,不用担心。
我会选择这样的东西:
if let image = UIImage(named: "example.png") {
if let data = UIImageJPEGRepresentation(image, 1.0) {
let filename = getDocumentsDirectory().appendingPathComponent("copy.png")
try? data.write(to: filename)
}
}
其中的func getDocumentsDirectory()如下:
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
return paths[0]
}
您可能想知道为什么我在UIImageJPEGRepresentation中的第二个参数上使用1.0,这是JPEG质量在0.0到1.0之间映射的值(是一个浮点数)。
如果您有我不知道的任何详细信息,请回复,我将尽力提供相应的帮助。 希望它能对您有所帮助,加油!
来源:link
答案 1 :(得分:0)
您是否尝试过将图像加载到UIImageView来查看图像是否已正确下载? static func writeImageFile(with data: Data, issue: Issue, page: Int, isThumbnail: Bool) throws -> URL {
let url = MediaFileManager.issueImagesDirectoryURL(issue: issue).ensuringDirectoryExists()
let imageURL = url.appendingPathComponent(imageName(for: page, isThumbnail: isThumbnail))
let image = UIImage(data: data)
let imgData = UIImageJPEGRepresentation(image, 1)
try imgData.write(to: imageURL)
return url
}
。
但是我也检测到您正在保存数据而不是图像,为了确保您正在保存图像,我将尝试以下操作
public function reviewsactivity()
{
$activity = Activity::orderBy('id', 'DESC')->paginate();
$users = User::orderBy('id', 'ASC')->pluck('id', 'name');
return view('reviews.reviewsactivity', compact('activity', 'users'));
}
是的,它可能有不必要的步骤,值得一试,通过这种方式,我们可以确保将其另存为Jpeg。但是再次,我将检查是否首先正确下载了图像。