Solved

Images created using ASP.NET won't open in photoshop

Posted on 2004-09-06
4
814 Views
Last Modified: 2012-08-14
I am using asp.net C# to generate thumbnails of photos that I upload.  

With any photo that is created by ASP.NET - the following happens:

1) The thumbnails display fine on the web in both IE and and Firefox when show with an img tag
2) If I try to access the thumbnail directly by URL in IE then it shows up as blank.
3) If I save the images to my computer - or access them directly from the server
     a) In photoshop I get the following error :
               Could not open "thumb23.jpg" because an unknown or invalid JPEG marker type is found
     b) In ACDSee it opens fine.
     c) In Microsoft Paint - it opens fine
     d) In Microsoft Phot Editor It opens fine
     e) Doing "Open With" Internet Explorer - it produces a broken image icon
     f) Opening directly in Firefox works
 

Any ideas on what is causing the invalid JPEG marker and how to fix this problem (i.e. how to stop it from occuring?)

Here is the code I am using :

string fileName = Path.GetFileName(UploadedPhoto.PostedFile.FileName); // get current filename
// Save the photo to the web photos directory
UploadedPhoto.PostedFile.SaveAs(Path.Combine(serverDestDir, "Photo" + newPhotoID + fileName.ToLower().Substring(fileName.Length - 4, 4)));

// Create an image object holding the photo so we can work on it
System.Drawing.Image newPhoto = System.Drawing.Image.FromFile(Path.Combine(serverDestDir, "Photo" + newPhotoID + fileName.ToLower().Substring(fileName.Length - 4, 4)));

// Determine the thumbnail width and height
int newHeight = 75; // fixed
double tempWidth = newPhoto.Width * ((double)newHeight / (double)newPhoto.Height);
int newWidth = (int)tempWidth; // proportional based on image size

// Now create the thumbnail
CreateThumbnail(newPhoto, newWidth, newHeight, Server.MapPath(thumbDestDir + "thumb" + newPhotoID + fileName.ToLower().Substring(fileName.Length - 4, 4)));

// Dispose of newPhoto image object now that thumbnail is created
newPhoto.Dispose();


void CreateThumbnail(System.Drawing.Image Photo, int width, int height, string ThumbPath)
{
      // Callback - does nothing, but required for compatibility
      System.Drawing.Image.GetThumbnailImageAbort tnCallBack = new System.Drawing.Image.GetThumbnailImageAbort(tnCallbackMethod);

      // Get the thumbnail image - witdth, height.  3rd and 4th params are not used, but needed for compatibility
      System.Drawing.Image ThumbnailImage = Photo.GetThumbnailImage(width, height, tnCallBack, IntPtr.Zero);
      
      // Save the thumbnail
      ThumbnailImage.Save(ThumbPath);
      
      // Dispose of Thumbnail Image object
      ThumbnailImage.Dispose();
}

// Must be called when creating a thumbnail, but not used
bool tnCallbackMethod()
{
      return false;
}


Note that in the above code the photo itself will have no error since it is not being created on the fly, but the thumbnail will.
0
Comment
Question by:mrichmon
  • 2
4 Comments
 
LVL 15

Accepted Solution

by:
Thogek earned 500 total points
ID: 11993001
Have you tried replacing
    ThumbnailImage.Save(ThumbPath);
with
    ThumbnailImage.Save(ThumbPath, System.Drawing.Imaging.ImageFormat.Jpeg);
0
 
LVL 35

Author Comment

by:mrichmon
ID: 12045404
No, I will try that.

Thanks for the suggestion - I will post the results...
0
 
LVL 35

Author Comment

by:mrichmon
ID: 12050878
Worked perfectly thanks!
0
 

Expert Comment

by:daz_oldham
ID: 24503799
I'm about to test this too as I have the same problem... fingers crossed :)  

daz@redstarcreative.co.uk
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Where can I ask about my ASP.NET MVC project? 6 36
ASP.NET MVC 2 31
How to close an asp.net web form using C# ? 4 30
Question about JQuery and asp.net 3 25
I have developed many web applications with asp & asp.net and to add and use a dropdownlist was always a very simple task, but with the new asp.net, setting the value is a bit tricky and its not similar to the old traditional method. So in this a…
Introduction This article shows how to use the open source plupload control to upload multiple images. The images are resized on the client side before uploading and the upload is done in chunks. Background I had to provide a way for user…
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question