Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

jpegdecompresssurface : picture decode failed : e00002d1 #40

Open
totoourworld opened this issue Jan 23, 2017 · 39 comments
Open

jpegdecompresssurface : picture decode failed : e00002d1 #40

totoourworld opened this issue Jan 23, 2017 · 39 comments

Comments

@totoourworld
Copy link

jpegdecompresssurface : picture decode failed : e00002d1
I can get exact same data as image data from sql server.
So i try to load image from NSData, below the code,

  • (void)process:(NSArray*)results
    {
    NSArray *table=[results objectAtIndex:0];
    NSDictionary *row=[table objectAtIndex:0];
    NSData *image_source=[row objectForKey:@"Company_Logo"];
    UIImage *image=[[UIImage alloc] initWithData:image_source];
    image=[UIImage imageWithData:image_source];
    [self.imageView setImage :image];
    }
    but the final step , it is showing like this, in here
    // [self.imageView setImage :image];
    jpegdecompresssurface : picture decode failed : e00002d1
    How can i solve this?
    Regards.
@martinrybak
Copy link
Owner

Please try the types branch.

@totoourworld
Copy link
Author

I used types branch and used the sample project for testing but same.
can you give me the source code for that?
I checked the
NSData *image_source=[row objectForKey:@"Company_Logo"];
by log the value.
but same as data in sql.
How can i use this for mapping to uiimage type?
can you teach me?
i want your reply. thanks .
king regards,

@martinrybak
Copy link
Owner

It could be related to this:
https://msdn.microsoft.com/en-us/library/ms177687(v=sql.90).aspx

What version of SQL Server are you using?
What data type is the column with the image?
If possible, can you attach the image file here?

@totoourworld
Copy link
Author

I am using the SQL EXPRESS 2016.
I used the Company_Logo(image,null) for saving/loading image.

Additionally, I am trying to load the image that saved by C# program i made.
In android , the image can be read by byte array and convert that to bitmap image, and it is working.
In C# , it is also working well.

but in iOS when i tried to do like that with above code , it is showing
jpegdecompresssurface : picture decode failed : e00002d1

@totoourworld
Copy link
Author

1

@totoourworld
Copy link
Author

3d_apple_logo_preview_featured

@totoourworld
Copy link
Author

visual_csharp_logo1-300x230

@totoourworld
Copy link
Author

images

@totoourworld
Copy link
Author

These three pictures , i used to try.
jpg file looks like that issue , but png file is not showing at all.

@totoourworld
Copy link
Author

Hello , Mr.Martin Rybak.
I tried to debug the code and found something related.
So, (void)process:(NSArray*)results
{
NSArray *table=[results objectAtIndex:0];
NSDictionary *row=[table objectAtIndex:0];
NSData *image_source=[row objectForKey:@"Company_Logo"];
UIImage image=[[UIImage alloc] initWithData:image_source];
image=[UIImage imageWithData:image_source];
[self.imageView setImage :image];
}
in this code ,(NSArray
) results is returning values from sql.
in here , i checked the @"Company_Logo".
It was NSInlineData and 4096bytes.
That's why the above 5kb jpg image is not showing full.
I tried to use small jpg image (for example 400bytes) , and it is showing well.
Can you give me some solution for large image?
Really thanks for your help.
Regards.

@martinrybak
Copy link
Owner

Please put a breakpoint on line 544 of SQLClient.m:

https://github.com/martinrybak/SQLClient/blob/types/SQLClient/SQLClient/SQLClient/SQLClient.m#L544

What is the value of column->size?

@totoourworld
Copy link
Author

in image type the column size is 4096

@totoourworld
Copy link
Author

column->size is 4096

@martinrybak
Copy link
Owner

OK, to be sure, put a breakpoint on this line and verify that dbcollen(_connection, c) is returning 4096 for your image column.

https://github.com/martinrybak/SQLClient/blob/types/SQLClient/SQLClient/SQLClient/SQLClient.m#L261

@martinrybak
Copy link
Owner

Also try changing your data type from image to varbinary(max)

@totoourworld
Copy link
Author

I tried both type, means , i saved the data to image type and varbinary(max) type
and read the data using your framework.
In 261 , breakpoint, the column.size is 4096 for both types , sir.

@martinrybak
Copy link
Owner

OK, in the freetds docs I found the following:

text size: default value of TEXTSIZE, in bytes. For text and image datatypes, sets the maximum width of any returned column. Cf. set TEXTSIZE in the T-SQL documentation for your server.

http://www.freetds.org/userguide/freetdsconf.htm

Try adding a file called freetds.conf to your app with these contents:

[global]
text size = 10000

Then add an environment variable to your app called FREETDS whose value is the path to that file.

http://www.freetds.org/userguide/envvar.htm

See if that helps.

@totoourworld
Copy link
Author

sorry but my app means?
ios project, sir?

@martinrybak
Copy link
Owner

Yes, add it to your iOS project.

@totoourworld
Copy link
Author

yeah ,i added freetds.conf to SQLClint folder , but i am not sure about the environment variable adding , can you guide me a bit more , sir?
thanks.

@martinrybak
Copy link
Owner

@totoourworld
Copy link
Author

freetds.conf path would be full path like this "/Volumes/Mac_Data/KO/pos_australia/latest/SQLClient_Type/SQLClient-types/SQLClient/SQLClient/SQLClient/freetds.conf"
or what's the right path of freetds.conf file, sir?

@totoourworld
Copy link
Author

I added with your requirement and ran the project
ntext type in sql returning column->size 8192 bytes in dbcollen(_connection, c) 164 line.
but image type and varbinary is same as 4096, sir.

@totoourworld
Copy link
Author

I got file path using your reference source code ,
"/var/containers/Bundle/Application/0E8B03A5-869A-4435-AE41-21972F55CA4B/SQLClient.app/freetds.conf"
so i set above path as value of FREETDS.

@totoourworld
Copy link
Author

what value would i check by debugging?

@totoourworld
Copy link
Author

00b9eedc-325f-4313-95ba-c97b0a649ffa
9f1448e2-d6b8-4b26-acb7-4323ae25c50f
14048687-816f-4288-bfd4-e90db90ac44d

@martinrybak
Copy link
Owner

The value must be relative to your app. Try freetds.conf instead.

@totoourworld
Copy link
Author

I changed with your instruction
and tested , again . but the column->size of image is still 4096

@totoourworld
Copy link
Author

ef9826a7-0c22-496b-91c7-dd11a662395a
4f0e0644-3328-4224-bb90-386516836e4c

@martinrybak
Copy link
Owner

Try setting other values to verify that TDS is finding your file.
http://www.freetds.org/userguide/freetdsconf.htm

@totoourworld
Copy link
Author

i setup the sql express 2016 to other computer windows 10 system.
in here , TDS version how can i check this?

I am really sorry for bothering your time, but can you teach me via my screen? like using teamviewer,sir?

@martinrybak
Copy link
Owner

I'm sorry, I can't do that. Please do some reading up on FreeTDS until you can customize the text size setting. I think that is the problem.

@totoourworld
Copy link
Author

so the conclsion is change the text size?

@amiparaharikant
Copy link

i facing this issue in my iOS app. please help me out. thank you.

in android application is working fine to get binary image from SQL server but facing issue in iOS and load some part of image only.

@totoourworld
Copy link
Author

totoourworld commented Aug 4, 2018 via email

@amiparaharikant
Copy link

screen shot 2018-08-04 at 11 38 59 am
@totoourworld i'm getting size of image is still 4096

@amiparaharikant
Copy link

amiparaharikant commented Aug 4, 2018

is this issue of getting size of image 4096byte is from SQL SERVER ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants