Data to UIImage to UIImageJPEGRepresentation equality failure
Why does this transformation fails to result in the same image data?
let path = Bundle(for: type(of: self)).url(forResource: "Image", withExtension: "jpg")
inputData = try! Data(contentsOf: path!)
let testImage = UIImage(data: inputData)
let testImageData = UIImageJPEGRepresentation(testImage!, 1.0)
expect(testImageData).to(equal(inputData))
From what I understand UIImageJPEGRepresentation
and UIImagePNGRepresentation
can strip the image of meta data. Is that the reason?
ios uiimage uikit uiimagepngrepresentation
add a comment |
Why does this transformation fails to result in the same image data?
let path = Bundle(for: type(of: self)).url(forResource: "Image", withExtension: "jpg")
inputData = try! Data(contentsOf: path!)
let testImage = UIImage(data: inputData)
let testImageData = UIImageJPEGRepresentation(testImage!, 1.0)
expect(testImageData).to(equal(inputData))
From what I understand UIImageJPEGRepresentation
and UIImagePNGRepresentation
can strip the image of meta data. Is that the reason?
ios uiimage uikit uiimagepngrepresentation
I think that the problem not inUIImageJPEGRepresentation
function but withUIImage
construction. It is hard to reason about a content ofUIImage
internals one thing to mention that it most likely to unpack jpeg to some bitmap format. So, converting this back to jpeg doesn't guarantee to have same data. Btw, what you'd like to test with this code?
– ilya
Nov 23 '18 at 12:06
thanks @ilya. this is just an excerpt from my test target simplified, but in general I am trying to see if I get back the same image I saved at some point.
– Zsolt
Nov 23 '18 at 12:11
1
In addition source file can have a lot of different features like interlacing etc. This kind of information most likely removed when creatingUIImage
object. In general there is no guarantee of having the same data with such chain of conversions.
– ilya
Nov 23 '18 at 12:12
for your task you need to find another way to identify image objects, like some naming convention (use UUID as a file name) or more complex data structures. Moreover, comparing binary data objects might be not so performant as you need.
– ilya
Nov 23 '18 at 12:16
add a comment |
Why does this transformation fails to result in the same image data?
let path = Bundle(for: type(of: self)).url(forResource: "Image", withExtension: "jpg")
inputData = try! Data(contentsOf: path!)
let testImage = UIImage(data: inputData)
let testImageData = UIImageJPEGRepresentation(testImage!, 1.0)
expect(testImageData).to(equal(inputData))
From what I understand UIImageJPEGRepresentation
and UIImagePNGRepresentation
can strip the image of meta data. Is that the reason?
ios uiimage uikit uiimagepngrepresentation
Why does this transformation fails to result in the same image data?
let path = Bundle(for: type(of: self)).url(forResource: "Image", withExtension: "jpg")
inputData = try! Data(contentsOf: path!)
let testImage = UIImage(data: inputData)
let testImageData = UIImageJPEGRepresentation(testImage!, 1.0)
expect(testImageData).to(equal(inputData))
From what I understand UIImageJPEGRepresentation
and UIImagePNGRepresentation
can strip the image of meta data. Is that the reason?
ios uiimage uikit uiimagepngrepresentation
ios uiimage uikit uiimagepngrepresentation
asked Nov 23 '18 at 11:51
ZsoltZsolt
2,13232443
2,13232443
I think that the problem not inUIImageJPEGRepresentation
function but withUIImage
construction. It is hard to reason about a content ofUIImage
internals one thing to mention that it most likely to unpack jpeg to some bitmap format. So, converting this back to jpeg doesn't guarantee to have same data. Btw, what you'd like to test with this code?
– ilya
Nov 23 '18 at 12:06
thanks @ilya. this is just an excerpt from my test target simplified, but in general I am trying to see if I get back the same image I saved at some point.
– Zsolt
Nov 23 '18 at 12:11
1
In addition source file can have a lot of different features like interlacing etc. This kind of information most likely removed when creatingUIImage
object. In general there is no guarantee of having the same data with such chain of conversions.
– ilya
Nov 23 '18 at 12:12
for your task you need to find another way to identify image objects, like some naming convention (use UUID as a file name) or more complex data structures. Moreover, comparing binary data objects might be not so performant as you need.
– ilya
Nov 23 '18 at 12:16
add a comment |
I think that the problem not inUIImageJPEGRepresentation
function but withUIImage
construction. It is hard to reason about a content ofUIImage
internals one thing to mention that it most likely to unpack jpeg to some bitmap format. So, converting this back to jpeg doesn't guarantee to have same data. Btw, what you'd like to test with this code?
– ilya
Nov 23 '18 at 12:06
thanks @ilya. this is just an excerpt from my test target simplified, but in general I am trying to see if I get back the same image I saved at some point.
– Zsolt
Nov 23 '18 at 12:11
1
In addition source file can have a lot of different features like interlacing etc. This kind of information most likely removed when creatingUIImage
object. In general there is no guarantee of having the same data with such chain of conversions.
– ilya
Nov 23 '18 at 12:12
for your task you need to find another way to identify image objects, like some naming convention (use UUID as a file name) or more complex data structures. Moreover, comparing binary data objects might be not so performant as you need.
– ilya
Nov 23 '18 at 12:16
I think that the problem not in
UIImageJPEGRepresentation
function but with UIImage
construction. It is hard to reason about a content of UIImage
internals one thing to mention that it most likely to unpack jpeg to some bitmap format. So, converting this back to jpeg doesn't guarantee to have same data. Btw, what you'd like to test with this code?– ilya
Nov 23 '18 at 12:06
I think that the problem not in
UIImageJPEGRepresentation
function but with UIImage
construction. It is hard to reason about a content of UIImage
internals one thing to mention that it most likely to unpack jpeg to some bitmap format. So, converting this back to jpeg doesn't guarantee to have same data. Btw, what you'd like to test with this code?– ilya
Nov 23 '18 at 12:06
thanks @ilya. this is just an excerpt from my test target simplified, but in general I am trying to see if I get back the same image I saved at some point.
– Zsolt
Nov 23 '18 at 12:11
thanks @ilya. this is just an excerpt from my test target simplified, but in general I am trying to see if I get back the same image I saved at some point.
– Zsolt
Nov 23 '18 at 12:11
1
1
In addition source file can have a lot of different features like interlacing etc. This kind of information most likely removed when creating
UIImage
object. In general there is no guarantee of having the same data with such chain of conversions.– ilya
Nov 23 '18 at 12:12
In addition source file can have a lot of different features like interlacing etc. This kind of information most likely removed when creating
UIImage
object. In general there is no guarantee of having the same data with such chain of conversions.– ilya
Nov 23 '18 at 12:12
for your task you need to find another way to identify image objects, like some naming convention (use UUID as a file name) or more complex data structures. Moreover, comparing binary data objects might be not so performant as you need.
– ilya
Nov 23 '18 at 12:16
for your task you need to find another way to identify image objects, like some naming convention (use UUID as a file name) or more complex data structures. Moreover, comparing binary data objects might be not so performant as you need.
– ilya
Nov 23 '18 at 12:16
add a comment |
1 Answer
1
active
oldest
votes
There is no particular reason why two JPEG files showing the same image would be identical. JPEG files have lots of header info, different compression algorithms, etc. And even if both files have a compression level of 1 (do they?) they are both lossy, so something will differ every time you expand and recompress. Your expectations here are just wrong. But then it also sounds like you’re trying to test something that does not need testing in the first place.
add a comment |
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53446195%2fdata-to-uiimage-to-uiimagejpegrepresentation-equality-failure%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
There is no particular reason why two JPEG files showing the same image would be identical. JPEG files have lots of header info, different compression algorithms, etc. And even if both files have a compression level of 1 (do they?) they are both lossy, so something will differ every time you expand and recompress. Your expectations here are just wrong. But then it also sounds like you’re trying to test something that does not need testing in the first place.
add a comment |
There is no particular reason why two JPEG files showing the same image would be identical. JPEG files have lots of header info, different compression algorithms, etc. And even if both files have a compression level of 1 (do they?) they are both lossy, so something will differ every time you expand and recompress. Your expectations here are just wrong. But then it also sounds like you’re trying to test something that does not need testing in the first place.
add a comment |
There is no particular reason why two JPEG files showing the same image would be identical. JPEG files have lots of header info, different compression algorithms, etc. And even if both files have a compression level of 1 (do they?) they are both lossy, so something will differ every time you expand and recompress. Your expectations here are just wrong. But then it also sounds like you’re trying to test something that does not need testing in the first place.
There is no particular reason why two JPEG files showing the same image would be identical. JPEG files have lots of header info, different compression algorithms, etc. And even if both files have a compression level of 1 (do they?) they are both lossy, so something will differ every time you expand and recompress. Your expectations here are just wrong. But then it also sounds like you’re trying to test something that does not need testing in the first place.
answered Nov 23 '18 at 19:07
mattmatt
334k46545742
334k46545742
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53446195%2fdata-to-uiimage-to-uiimagejpegrepresentation-equality-failure%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I think that the problem not in
UIImageJPEGRepresentation
function but withUIImage
construction. It is hard to reason about a content ofUIImage
internals one thing to mention that it most likely to unpack jpeg to some bitmap format. So, converting this back to jpeg doesn't guarantee to have same data. Btw, what you'd like to test with this code?– ilya
Nov 23 '18 at 12:06
thanks @ilya. this is just an excerpt from my test target simplified, but in general I am trying to see if I get back the same image I saved at some point.
– Zsolt
Nov 23 '18 at 12:11
1
In addition source file can have a lot of different features like interlacing etc. This kind of information most likely removed when creating
UIImage
object. In general there is no guarantee of having the same data with such chain of conversions.– ilya
Nov 23 '18 at 12:12
for your task you need to find another way to identify image objects, like some naming convention (use UUID as a file name) or more complex data structures. Moreover, comparing binary data objects might be not so performant as you need.
– ilya
Nov 23 '18 at 12:16