Data to UIImage to UIImageJPEGRepresentation equality failure












0















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?










share|improve this question























  • 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






  • 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
















0















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?










share|improve this question























  • 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






  • 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














0












0








0








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?










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 23 '18 at 11:51









ZsoltZsolt

2,12732443




2,12732443













  • 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






  • 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



















  • 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






  • 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

















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












1 Answer
1






active

oldest

votes


















0














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.






share|improve this answer























    Your Answer






    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
    });


    }
    });














    draft saved

    draft discarded


















    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









    0














    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.






    share|improve this answer




























      0














      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.






      share|improve this answer


























        0












        0








        0







        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.






        share|improve this answer













        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.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 23 '18 at 19:07









        mattmatt

        325k45524723




        325k45524723






























            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Berounka

            Fiat S.p.A.

            Type 'String' is not a subtype of type 'int' of 'index'