Hiển thị kết quả từ 1 đến 5 / 5
  1. #1
    Tham gia
    23-07-2002
    Location
    Hà nội
    Bài viết
    182
    Like
    0
    Thanked 1 Time in 1 Post

    [Q] Help me: Lỗi khi load ảnh!?

    Một lỗi xuất hiện khi load ảnh:
    .....
    fs là một FileStream
    //Show image
    picView.Image = Image.FromStream(fs); Lỗi ở dòng này
    .....
    Khi dữ liệu của fs được tạo từ định dạng của ảnh jpg thì Ok, còn từ gif là xuất hiện lỗi này: 'A generic error occurred in GDI+.'
    (Dữ liệu của các file jpg và gif đều được lưu vào database, sau đó đọc từ database để load lên)

    //
    Còn khi load ảnh từ một file ảnh (được tạo từ database). Load lần thứ nhất thì Ok. Nhưng lần thứ 2: khi ta đụng đến file này (fs = new FileStream(strPath,FileMode.Create,FileAccess.Read Write); hay File.Delete(strPath)) thì được báo là file này đang được dùng.
    Có phải sau khi được load rồi (picView.Image = Image.FromFile(strPath) vẫn còn cái gì đó giữ file này!
    Quote Quote

  2. #2
    Tham gia
    16-07-2002
    Location
    Ha Noi
    Bài viết
    1,218
    Like
    0
    Thanked 0 Times in 0 Posts
    Thì cái FileStream chứ còn cái nào "giữ" file nữa. Trước khi làm thì thay đổi, bạn phải close() nó đi đã.

  3. #3
    Tham gia
    23-07-2002
    Location
    Hà nội
    Bài viết
    182
    Like
    0
    Thanked 1 Time in 1 Post
    Tất nhiên, mình đã thực hiện việc đóng rồi.

  4. #4
    Tham gia
    09-01-2007
    Bài viết
    52
    Like
    0
    Thanked 0 Times in 0 Posts

    Thông tin

    Chào các bạn. Mình cũng làm 1 ứng dụng có liên quan đến load hình ảnh từ database.
    Mình dùng 2 hàm này để thêm và lấy lên từ database:
    Code:
    public static byte[] ImageToByteArray(Image image)
            {
                if (image != null)
                {
                    MemoryStream stream = new MemoryStream();
                    image.Save(stream, ImageFormat.Bmp);
                    return stream.ToArray();
                }
                else
                {
                    return null;
                }
            }
    
            public static Image ByteArrayToImage(byte[] bytes)
            {
                Image img = null;
                if (bytes != null)
                {
                    MemoryStream stream = new MemoryStream(bytes);
                    img = Image.FromStream(stream);
                }
                return img;
            }
    Hàm thêm thì ổn còn hàm load thì bị lỗi này : 'Parameter is not valid'.
    Mong được các bạn giúp đỡ. À ngoài ra mình muốn giới hạn kích thước hay thay đổi kích thước khi thêm mà ko biết làm thế nào. Mong các bạn giúp đỡ.
    Thanks

  5. #5
    Tham gia
    20-02-2009
    Location
    Ninh Bình
    Bài viết
    567
    Like
    0
    Thanked 34 Times in 31 Posts
    Quote Được gửi bởi hueduongit View Post
    Một lỗi xuất hiện khi load ảnh:
    .....
    fs là một FileStream
    //Show image
    picView.Image = Image.FromStream(fs); Lỗi ở dòng này
    .....
    Khi dữ liệu của fs được tạo từ định dạng của ảnh jpg thì Ok, còn từ gif là xuất hiện lỗi này: 'A generic error occurred in GDI+.'
    (Dữ liệu của các file jpg và gif đều được lưu vào database, sau đó đọc từ database để load lên)

    //
    Còn khi load ảnh từ một file ảnh (được tạo từ database). Load lần thứ nhất thì Ok. Nhưng lần thứ 2: khi ta đụng đến file này (fs = new FileStream(strPath,FileMode.Create,FileAccess.Read Write); hay File.Delete(strPath)) thì được báo là file này đang được dùng.
    Có phải sau khi được load rồi (picView.Image = Image.FromFile(strPath) vẫn còn cái gì đó giữ file này!

    Bạn thân. Gif file là dạng file vẫn còn ...tác quyền (và tác giả của gif file đã kiếm được hàng chục triệu đô la). Cho nên, hầu như sau này, những ấn bản mới của Microsoft đều không dùng gif file được nữa, và sẽ bị lỗi, vì Microsoft không muốn trả tiền bản quyền cho tác giả của gif file (MS nghĩ rằng tác giả của gif file đã được hưởng lợi quá nhiều cho một tác phẩm cũng chẳng lấy gì làm đặc sắc và công phu cho lắm - và tôi hoàn toàn đồng ý với MS)

    Cho nên, nếu bạn muốn dùng một hình ảnh nào đó còn thuộc dạng gif, hãy chuyển nó qua .png trước. Và hãy như tôi, chúng ta nên tẩy chay gif file. Cái tối ưu của gif file là animation. Nếu bạn không cần đến animation, đừng dùng gif file.

    Điểm tối ưu của png file là 1) thông dụng trên tất cả các browser và 2) transpa rency.

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •